Получение CimException: недопустимое свойство при использовании Get-Disk без параметров

У меня есть скрипт, который использует команду 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

person Bender the Greatest    schedule 27.09.2017    source источник
comment
Я думаю, что get-disk читает/устанавливает из класса MSFT WMI. Я предполагаю, что перед запуском Get-Disk нужно убедиться, что служба winmgmt запущена.   -  person BenH    schedule 27.09.2017
comment
Я изменил свой сценарий, чтобы убедиться, что winmgmt работает, прежде чем продолжить, и проблема все еще возникает.   -  person Bender the Greatest    schedule 02.10.2017
comment
В итоге я переписал сценарий, чтобы использовать diskpart вместо командлетов модуля хранения. Если проблема кажется решенной, я опубликую ее как обходной ответ.   -  person Bender the Greatest    schedule 03.10.2017


Ответы (1)


В итоге я подготовил диски с помощью diskpart вместо командлетов хранилища, которые работают без проблем. Хотя я обнаружил, что наш скрипт работает, пока установка Windows все еще завершается, что может объяснять неправильную работу командлетов хранилища.

Последующие действия. Я подтвердил, что командлеты хранилища действительно не работают из-за завершения установки Windows. Теперь, когда я понял, как дождаться завершения, командлеты хранилища каждый раз работают нормально.

person Bender the Greatest    schedule 06.10.2017