Назад | Перейти на главную страницу

Избегайте усечения сообщения об ошибке в ошибке Powershell

Я получаю такую ​​ошибку Powershell:

PS C:\mydirectory> $Error[0]
Get-WmiObject : 
At line:143 char:13
+           $Disk = Get-WmiObject MSCluster_Disk -ComputerName $Resource.OwnerNode -Auth    ...
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Есть ли способ избежать команды, вызвавшей ошибку (т. Е. $Disk = Get-WmiObject MSCluster_Disk ...) усекается в сообщении об ошибке?

Это можно найти в объекте ошибки. $Error это массив ошибок, и [0] самый последний. Это действительно объект, который можно допросить ...

($Error[0]).InvocationInfo.Line

Выдает полную строку скрипта, вызвавшего ошибку. В InvocationInfo свойство не будет существовать из-за ошибок из командной строки.

Вы можете получить и другие хорошие свойства: PSScriptRoot который дает вам путь к файлу сценария, ScriptName который дает вам имя файла и ScriptLineNumber что дает вам строку в скрипте, которая потерпела неудачу.