避免在 Powershell 错误中截断错误消息

Jam*_*olt 13 powershell-v4.0

我收到这样的 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
Run Code Online (Sandbox Code Playgroud)

有没有办法可以避免触发错误(即$Disk = Get-WmiObject MSCluster_Disk ...)的命令在错误消息中被截断?

小智 16

这可以在错误对象中找到。$Error是一系列错误,并且[0]是最新的。那实际上是一个可以询问的对象......

($Error[0]).InvocationInfo.Line
Run Code Online (Sandbox Code Playgroud)

将为您提供生成错误的脚本中的完整行。InvocationInfo对于来自命令行的错误,该属性将不存在。

您可以获得的其他不错的属性是PSScriptRoot,它为您提供脚本文件的路径,ScriptName为您提供文件名,以及ScriptLineNumber为您提供脚本中失败的行。