在先前的技巧中你能觀察到使用了 “-ErrorAction Stop”結合“異常捕獲命令”能捕獲一個Powershell命令的錯誤,可是使用了這種方式操作之后,腳本會在第一個錯誤發(fā)生后停止。
下面舉例:使用Powershell遞歸掃描文件夾。它將不能完成捕獲中間所有的異常(例如某些子文件夾是受訪問保護的)。
復制代碼 代碼如下:
try
{
Get-ChildItem -Path $env:windir -Filter *.ps1 -Recurse -ErrorAction Stop
}
catch
{
Write-Warning "Error: $_"
}
代碼捕獲了第一個錯誤,這時命令將停止且不會繼續(xù)掃描剩下的子文件夾。
如果你只是抑制錯誤,你將完成執(zhí)行,但是“異常捕獲命令”將無法捕獲到任何錯誤信息。
復制代碼 代碼如下:
try
{
Get-ChildItem -Path $env:windir -Filter *.ps1 -Recurse -ErrorAction SilentlyContinue
}
catch
{
Write-Warning "Error: $_"
}
所以如果你想連續(xù)執(zhí)行且獲得沒權限訪問的目錄,完全不需要使用“異常捕獲命令”,你可以指定變量來獲得所有錯誤報告:
復制代碼 代碼如下:
Get-ChildItem -Path $env:windir -Filter *.ps1 -Recurse -ErrorAction SilentlyContinue -ErrorVariable myErrors
Foreach ($incidence in $myErrors)
{
Write-Warning ("Unable to access " + $incidence.CategoryInfo.TargetName)
}
您可能感興趣的文章:- PowerShell中查詢錯誤編號信息的2個方法
- Powershell小技巧之找出腳本中的錯誤
- Powershell小技巧之用變量累積記錄錯誤
- 淺談PowerShell 捕獲錯誤
- Powershell錯誤處理之what-if