获取CimException:使用没有参数的Get-Disk时出现无效属性

时间:2017-09-27 13:43:16

标签: powershell windows-server-2012-r2 powershell-v4.0

我有一个使用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)启动。此详细信息可能不相关,但此脚本在此插件启动时仅运行失败。

其他详情:

  • Powershell版本:4.0
  • 操作系统版本:Windows Server 2012 R2
  • 虚拟机管理程序:VMWare vCenter版本6.0.0 Build 5112533
  • vRO版本:7.2

1 个答案:

答案 0 :(得分:1)

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

跟进:由于Windows安装仍在完成,我确实确认存储cmdlet确实无法正常工作。现在我想出了如何等待完成,存储cmdlet每次都能正常工作。