获取 CimException:使用不带参数的 Get-Disk 时无效 属性

Getting CimException: Invalid property when using Get-Disk with no parameters

我有一个使用 Powershell 中的 Get-Disk 命令的脚本。在使用不带参数的 Get-Disk 时间歇性地出现错误:

$disk = Get-Disk | Where-Object { $_.Location -eq $Location }

Microsoft.Management.Infrastructure.CimException: Invalid property 
   at Microsoft.Management.Infrastructure.Internal.Operations.CimAsyncObserverProxyBase`1.ProcessNativeCallback(OperationCallbackProcessingContext callbackProcessingContext, T currentItem, Boolean moreResults, MiResult operationResult, String errorMessage, InstanceHandle errorDetailsHandle)

其中 $Location 是磁盘位置(类似于 PCIROOT(0)#PCI(1500)#PCI(0000)#SAS(P00T01L00))。此行 运行 来自的脚本是我们 VM 配置脚本的一部分,在克隆和 VMWare 自定义脚本 运行 之后得到 运行。这个错误并不总是发生,如果我稍后手动 运行 脚本,它每次都会成功,这让我相信这是某种竞争条件。关于 Get-Disk 为何无法可靠工作的任何想法?

最终,此脚本将使用 Guest Script Manager 插件从 vRealize Orchestrator(vRO,以前称为 vCenter Orchestrator 或 vCO)启动。此详细信息可能不相关,但此脚本仅在被此插件启动时失败 运行ning。

其他详细信息:

我最终使用 diskpart 而不是存储 cmdlet 来配置磁盘,这没有问题。虽然我确实发现我们的脚本是 运行 而 Windows 安装仍在完成,这可能是存储 cmdlet 无法正常工作的原因。

跟进:我确认存储 cmdlet 确实没有工作,因为 Windows 安装仍在完成。现在我知道了如何等待完成,存储 cmdlet 每次都能正常工作。