如何将2个错误输出合并为一个

时间:2019-06-26 07:34:26

标签: powershell error-handling try-catch

下面在我的日志中输入2行:

  
      
  1. “ 2019-06-25 16:08:23”“错误:”“从C:\ Users \ Simon.Evans \ Documents \ Source Data \ LNAT \ Code_Maping.txt复制到   I:\ Dev \ BI \ Projects \ Powershell \ Test Area \ Source   Data \ LNAT \ Code_Mapping.txt失败”

  2.   
  3. “ 2019-06-25 16:08:23”“错误:”“找不到路径'C:\ Users \ Simon.Evans \ Documents \ Source Data \ LNAT \ Code_Maping.txt'   因为它不存在。”

  4.   

是否可以将2个或仅在1行/每行中同时使用?

catch{
    $Error[0] | Write-Log -path $varfullpath                                                                            
    Write-log -Message "Copy from $sourceDirectory to $destinationDirectory Failed"  -Level Error -path $varfullpath     
} 

1 个答案:

答案 0 :(得分:0)

PowerShell将所有错误保存在$Error对象中。
每个新错误都会添加到列表的开头。
如果列表的长度超过256($MaximumErrorCount),则列表中的最后一个错误将消失。
这意味着您可以简单地串联列表中的前两个错误(如Ranadip Dutta所说):

($Error[1].ToString() + [System.Environment]::NewLine + $Error[0].ToString()) |
    Write-Log -path $varfullpath

(请注意,如果仅捕获了1个错误,这可能会失败。)