我有一个脚本可以在启动时测试几件事情,例如,如果仍需要映射某些网络驱动器。然后,如果需要,它将映射它。
有时会出现这样的错误。
In \\server\powershell$\Powershell-Scripts\_DVLP\LogonScript.ps1:57
Zeichen:9
+ $Map.MapNetworkDrive($_.letter,$_.path,$false)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
我通过简单地将$error
变量导出到文件中生成的文件将该错误视为电子邮件附件
$error |out-file C:\myfile.txt -force
正如您所看到的,错误不是很有用,因为我没有看到驱动器号。所以我想把我的.mapnetworkdrive包装成一个Try / Catch Block。
Try {...}
Catch {
$failedletter= $_.letter
$failedpath = $_.path
$export = $failedletter + $failedpath + $_.exception.message #send this to $error variable
}
现在我的问题是,如果我可以将整个Catch Block(或其中的一部分)发送到$error
变量,那么我就不必使我的日志记录更复杂。有没有办法把东西发送到错误变量?
我可以简单地$error += $export
吗?那么在$ error变量中它是两次吗?它应该只在那里
答案 0 :(得分:0)
如果您在votes
上调用Get-Member
cmdlet,您会看到,您只能设置ErrorRecord
:
ErrorDetails
所以你可以这样做:
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 ISerializable....
GetType Method type GetType()
ToString Method string ToString()
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 };}