PowerShell捕獲錯誤的2種方法(異常捕獲命令、錯誤變量)
在先前的技巧中你能觀察到使用了 “-ErrorAction Stop”結(jié)合“異常捕獲命令”能捕獲一個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í)行且獲得沒權(quán)限訪問的目錄,完全不需要使用“異常捕獲命令”,你可以指定變量來獲得所有錯誤報告:
Get-ChildItem -Path $env:windir -Filter *.ps1 -Recurse -ErrorAction SilentlyContinue -ErrorVariable myErrors
Foreach ($incidence in $myErrors)
{
Write-Warning ("Unable to access " + $incidence.CategoryInfo.TargetName)
}
相關(guān)文章
PowerShell腳本實現(xiàn)檢測網(wǎng)絡(luò)內(nèi)主機類型
這篇文章主要介紹了PowerShell腳本實現(xiàn)檢測網(wǎng)絡(luò)內(nèi)主機類型,本文腳本基本功能可以實現(xiàn)判斷主機操作系統(tǒng)類型,如果是域內(nèi)的主機可以獲取主機的硬件參數(shù)和性能參數(shù),并判斷是否存在網(wǎng)絡(luò)設(shè)備,需要的朋友可以參考下2014-12-12Powershell小技巧之使用-F方法帶入數(shù)據(jù)
這篇文章主要介紹了Powershell的一個使用-F方法帶入數(shù)據(jù)的小技巧,非常的簡單,也很易懂,記錄一下分享給大家2014-09-09PowerShell Contains函數(shù)查找字符串實例
這篇文章主要介紹了PowerShell Contains函數(shù)查找字符串實例,Contains函數(shù)的作用是查詢一個字符串中是否存在另一個字符串,需要的朋友可以參考下2014-08-08PowerShell入門教程之快速學(xué)習PowerShell的幾個方法
這篇文章主要介紹了PowerShell入門教程之快速學(xué)習PowerShell的幾個方法,本文提出了3種快速學(xué)習PowerShell的方法,需要的朋友可以參考下2014-10-10Powershell實現(xiàn)加密解密文本文件方法實例
這篇文章主要介紹了Powershell實現(xiàn)加密解密文本文件方法實例,本文直接給出加密和解密代碼實例,需要的朋友可以參考下2015-04-04