我有一个使用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)启动。此详细信息可能不相关,但此脚本在此插件启动时仅运行失败。
其他详情:
答案 0 :(得分:1)
我最终使用diskpart而不是存储cmdlet配置磁盘,这没有问题。虽然我确实发现我们的脚本在Windows安装仍在完成时正在运行,这可能导致存储cmdlet无法正常工作。
跟进:由于Windows安装仍在完成,我确实确认存储cmdlet确实无法正常工作。现在我想出了如何等待完成,存储cmdlet每次都能正常工作。