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

11

Я получаю ошибку 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 ...Е.) В сообщении об ошибке?

Джеймс Л
источник

Ответы:

14

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

($Error[0]).InvocationInfo.Line

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

Другие полезные свойства, которые вы можете получить, - это то, PSScriptRootчто дает вам путь к файлу скрипта, ScriptNameкоторый дает вам имя файла, и ScriptLineNumberкоторый дает вам строку в скрипте, которая не удалась.

JNK
источник