将catch块发送到$ error变量

时间:2016-06-08 12:00:47

标签: powershell

我有一个脚本可以在启动时测试几件事情,例如,如果仍需要映射某些网络驱动器。然后,如果需要,它将映射它。

有时会出现这样的错误。

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变量中它是两次吗?它应该只在那里

1 个答案:

答案 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 };}