errorvariable是
System.Management.Automation.ErrorRecord
.
如果你做了
Get-Member
在该变量上,可以看到它具有以下方法和属性:
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context), void ISeri...
GetType Method type GetType()
ToString Method string ToString()
writeErrorStream NoteProperty bool writeErrorStream=True
CategoryInfo Property System.Management.Automation.ErrorCategoryInfo CategoryInfo {get;}
ErrorDetails Property System.Management.Automation.ErrorDetails ErrorDetails {get;set;}
Exception Property System.Exception Exception {get;}
FullyQualifiedErrorId Property string FullyQualifiedErrorId {get;}
InvocationInfo Property System.Management.Automation.InvocationInfo InvocationInfo {get;}
PipelineIterationInfo Property System.Collections.ObjectModel.ReadOnlyCollection[int] PipelineIterationInfo {get;}
ScriptStackTrace Property string ScriptStackTrace {get;}
TargetObject Property System.Object TargetObject {get;}
PSMessageDetails ScriptProperty System.Object PSMessageDetails {get=& { Set-StrictMode -Version 1; $this.Exception.InnerException.PSMessageDetails };}
如果你不考虑
Write-Host
把你的代码以
$errmsg
它将返回整个错误(错误颜色为红色)
您可以通过组合
$errmsg
像这样的对象:
$err = "`r`nError: {0}`r`n + CategoryInfo : {1}`r`n + FullyQualifiedErrorId : {2}" -f $errmsg.ErrorDetails, $errmsg.CategoryInfo, $errmsg.FullyQualifiedErrorId
Write-Host $err
或者使用here字符串以提高可读性:
$err = @"
Error: $($errmsg.ErrorDetails)
+ CategoryInfo : $($errmsg.CategoryInfo)
+ FullyQualifiedErrorId : $($errmsg.FullyQualifiedErrorId)
"@
Write-Host $err
可能会有更多感兴趣的属性添加到其中,但这取决于您。