磁盘与文件系统

排查 PowerShell、Hyper-V、存储和群集管理问题 - Windows Server

· 52CE 我爱测

本文提供了一个全面的指南,用于排查在 Windows Server 2016、Windows Server 2019、Windows Server 2022、Windows Server 2025 和 Windows 10 企业/教育版中管理 Hyper-V、存储空间直通(S2D)、故障转移群集和 PowerShell 任务时遇到的常见问题。 这些问题通常影响虚拟机作、存储管理、群集通信和自动化,从而导致 VHD/VSS 损坏和 PowerShell cm

本文提供了一个全面的指南,用于排查在 Windows Server 2016、Windows Server 2019、Windows Server 2022、Windows Server 2025 和 Windows 10 企业/教育版中管理 Hyper-V、存储空间直通(S2D)、故障转移群集和 PowerShell 任务时遇到的常见问题。 这些问题通常影响虚拟机作、存储管理、群集通信和自动化,从而导致 VHD/VSS 损坏和 PowerShell cmdlet 错误等故障。 本指南提供详细的解决方案和诊断方法来解决这些难题。

可能会遇到以下问题:

Hyper-V/虚拟化问题

  • 虚拟机(VM)导入或迁移失败,没有显式错误消息。
  • 优化 VHD 等任务后无法启动的 VM,错误代码0x80070570:

该文件或目录已损坏且无法读取。

  • 通过 PowerShell 启用处理器兼容性或杂交模式时出现问题。

  • 对具有不同 CPU 模型的群集节点之间的 VM 实时迁移的担忧。

  • 通过 PowerShell 生成清单或存储使用情况报告时失败。

  • 应用配置脚本后,意外的主机重新启动(蓝屏死亡)。

  • PowerShell cmdlet 错误,例如:

无法在此对象上找到 MonitorMode 属性。 验证属性是否存在并且可以设置。 - > connect-VIServer:无法连接:无法加载文件或程序集 VMware.Vim,版本=8.3.0.399...

存储/S2D 问题

  • Get-PhysicalDisk 不 Get-VirtualDisk 返回来自某些群集节点的输出或不正确的数据。
  • 磁盘在 PowerShell 中显示为“未知”或已分离,但在故障转移群集管理器中显示为正常。
  • App-V 包中的文件显示为 脱机 或重新分析点,应用程序无法启动。
  • 卷影复制服务 (VSS) 命令,例如 vssadmin list writers,返回空或缺失的编写器列表。

群集/权限问题

  • 运行具有 cmdlet 的 Get-Cluster* PowerShell 脚本的计划任务在被动节点上失败,并出现如下错误:

Get-Cluster:在群集上没有管理权限。 拒绝访问。

  • 切换设置或重启服务后,权限的间歇性还原。

常规/报告问题

  • 无法通过 PowerShell 枚举磁盘、存储使用情况或生成清单报告。
  • 使用 PowerShell 连接到 Azure 订阅时出现问题。
  • 需要有关在 Windows 10 或 Windows 11 上添加注册表项或配置存储/高可用性的指导。

这些问题的根本原因可按如下所示进行分类:

原因 1:配置或知识差距

  • PowerShell cmdlet 语法不正确或不完整。
  • 对使用内置工具检索存储或 VM 信息的理解有限。
  • 不同硬件之间 VM 迁移的 CPU 兼容性要求误解。

原因 2:权限/上下文问题

  • 作为 SYSTEM 帐户运行的计划任务或 PowerShell 脚本缺少群集权限,尤其是在被动节点上。
  • 用户帐户控制(UAC)或组策略限制限制执行上下文。
  • 分配给群集或存储 cmdlet 的服务帐户的权限不足。

原因 3:软件/驱动程序 bug

  • Windows Server 更新引入的 Bug(例如,2025 年 5 月更新由于 vhdmp.sys 问题导致 VHD 损坏)。
  • S2D 或故障转移群集 PowerShell 模块中的缺陷导致磁盘或虚拟磁盘信息不一致。
  • 在 App-V 包作期间更新文件属性或删除重新分析点失败。

原因 4:环境或第三方干扰

  • 安全或防病毒软件干扰 VSS 编写器或文件系统作。
  • 第三方工具(如 VMware PowerCLI、Zscaler 或 Crowdstrike)导致的依赖项或功能块。
  • 非永久性磁盘、未加入域的系统或不支持的服务器版本。

原因 5:不支持的方案

  • 在不支持的 Windows Server 版本上运行命令或使用专为其他平台设计的脚本(例如,Hyper-V上的 VMware cmdlet)。
  • 尝试高级配置更改(例如 NIC/SR-IOV 或注册表调整),而无需进行适当的测试。

按照这些分步解决方案解决所描述的问题。

PowerShell cmdlet 和报告问题的解决方法

  1. 验证 cmdlet 语法:

    • 始终使用官方Microsoft文档验证 PowerShell cmdlet 语法。

    • 磁盘和存储使用情况的示例:

      在 Hyper-V 主机上:

      Get-Volume | Select-Object DriveLetter, Size, SizeRemaining
      

      在 VM 中:

      Get-Volume | Select-Object -Property DriveLetter, Size, SizeRemaining
      
    • 导出清单:

      Get-VM | Select-Object -Property * | Export-Csv -Path "C:\VMInventory.csv" -NoTypeInformation
      
  2. 启用 VM 处理器兼容性:

    Set-VMProcessor -VMName <VMName> -CompatibilityForMigrationEnabled $true
    Set-VMProcessor -VMName <VMName> -CompatibilityForOlderOperatingSystemsEnabled $true
    Get-VMProcessor -VMName <VMName> # Confirm settings
    
  3. 杂交模式/监视模式:

    • 使用正确的属性名称(例如,AllowPacketDirect 而不是 MonitorMode for Hyper-V vSwitches)。
    • 使用官方Microsoft源交叉检查第三方文档。
  4. Azure PowerShell 身份验证:

    Install-Module Az -Scope CurrentUser
    Import-Module Az
    Connect-AzAccount
    Set-AzContext -Subscription "<subscription-name-or-id>"
    
  5. 解决 VMware PowerCLI 错误。

    确保从官方源安装 PowerCLI,并检查 VMware 对缺少程序集问题的支持。

解决群集和权限问题

  1. 解决访问被拒绝错误:

    • 使用具有群集管理脚本适当权限的域服务帐户。
    • 如果使用 SYSTEM,在故障转移群集管理器中切换权限:
      • 删除并重新添加具有“允许”权限的 SYSTEM 帐户。
      • 重启与群集相关的服务。
  2. 修复存储 cmdlet 故障:

    • 重新启动所有群集节点以重置状态并清除不一致。

    • 收集诊断日志:

      Get-SddcDiagnosticInfo -Path
      

存储、文件系统和 VHD 问题的解决方法

  1. VHD 损坏:

    • 安装 2025 年 6 月累积更新以修复 vhdmp.sys bug。

    • 在应用更新之前禁用计划 Optimize-VHD 任务。

    • 查看已安装的更新:

      Get-HotFix | Sort-Object InstalledOn -Descending
      
  2. App-V 包文件问题:

    • 分析文件属性:

      Get-ChildItem -Path <package-path> -Recurse | Select-Object FullName, Attributes
      
    • 禁用导致干扰的第三方软件。

  3. 通过重启 VSS 服务解决缺少的 VSS 编写器:

    Restart-Service -Name VSS
    

解决常规配置/注册表/高可用性问题

  1. 添加注册表项:

    Set-ItemProperty -Path "HKLM:\Software\<Path>" -Name "<Key>" -Value "<Value>"
    
  2. 处理具有不同 CPU 的群集节点。

    在迁移期间为 VM 启用 CPU 兼容性:VM 设置>处理器>迁移到具有不同处理器版本的物理计算机。

  3. 避免高级配置风险:

    • 在部署之前全面测试高级 NIC 属性(如 SR-IOV)。
    • 使用新式浏览器,而不是禁用 Internet Explorer 增强的安全性。

数据收集

如果需要进一步的帮助,请收集以下数据:

  • PowerShell 输出(例如,Get-Volume或Get-VM``Get-PhysicalDisk)。
  • TSS 工具中的诊断。
  • 使用 Get-SddcDiagnosticInfo.
  • VSS 状态为 vssadmin list writers.
  • 已安装的修补程序, 使用 Get-HotFix.

有关详细信息,请参阅 Hyper-V、S2D、PowerShell 和故障转移群集的官方Microsoft文档。 始终确保环境已完全修补,并在非生产环境中测试配置,然后再进行重大更改。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。