У меня есть скрипт, который использует команду Get-Disk в Powershell. Время от времени я получаю сообщение об ошибке при использовании 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)
). Сценарий, из которого запускается эта строка, является частью нашего сценария подготовки виртуальной машины, который запускается после запуска сценария клонирования и настройки VMWare. Эта ошибка возникает не всегда, и если я позже запускаю скрипт вручную, он каждый раз завершается успешно, заставляя меня поверить, что это какое-то состояние гонки. Любые идеи относительно того, почему Get-Disk не работает надежно?
В конечном итоге этот сценарий запускается из vRealize Orchestrator (vRO, ранее vCenter Orchestrator или vCO) с помощью подключаемого модуля Guest Script Manager
. Эта деталь может быть неактуальной, но этот скрипт не запускается только тогда, когда этот плагин запускает его.
Дополнительные детали:
- Версия PowerShell: 4.0
- Версия ОС: Windows Server 2012 R2
- Гипервизор: VMWare vCenter, версия 6.0.0, сборка 5112533.
- vRO Версия: 7.2
get-disk
читает/устанавливает из класса MSFT WMI. Я предполагаю, что перед запускомGet-Disk
нужно убедиться, что службаwinmgmt
запущена. - person BenH   schedule 27.09.2017winmgmt
работает, прежде чем продолжить, и проблема все еще возникает. - person Bender the Greatest   schedule 02.10.2017