Évitez de tronquer le message d'erreur dans l'erreur Powershell

11

Je reçois une erreur Powershell comme celle-ci:

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

Existe-t-il un moyen d'éviter que la commande qui a déclenché l'erreur (c'est-à-dire $Disk = Get-WmiObject MSCluster_Disk ...) soit tronquée dans le message d'erreur?

James L
la source

Réponses:

14

Cela peut être trouvé dans l'objet d'erreur. $Errorest un tableau d'erreurs et [0]est le plus récent. C'est en fait un objet qui peut être interrogé ...

($Error[0]).InvocationInfo.Line

Vous donnera la ligne complète dans le script qui a généré l'erreur. La InvocationInfopropriété n'existe pas pour les erreurs de la ligne de commande.

Vous pouvez également obtenir d'autres propriétés intéressantes PSScriptRootqui vous donnent le chemin d'accès au fichier de script, ScriptNamequi vous donne le nom du fichier et ScriptLineNumberqui vous donne la ligne du script qui a échoué.

JNK
la source