你可以用這個做很多事情。讓我先告訴你你在找什麼:
因此,讓我們說你有一個錯誤,爲了捕捉你應該使用try/catch。
更換:
Get-Content "\\$server\c$\file.log" | Select-String "Error" -quiet | Select-Object $server
隨着這:
try
{
Get-Content "\\$server\c$\file.log" | Select-String "Error" -quiet | Select-Object $server
}
catch
{
$Error >> ErrorFile.txt
}
第二件事,我建議是。假設你有10臺電腦,並假設第8臺電腦有一些錯誤。但是你仍然不希望停止循環,並繼續循環的其餘計算機。在這種情況下,你應該使用2 try/catch語句是這樣的:
$computernames = Get-Content C:\PC.txt
try
{
foreach ($server in $computernames)
{
$filepath = Test-Path "\\$server\c$\"
try{
if ($filepath -eq "True") {
try
{
Get-Content "\\$server\c$\file.log" | Select-String "Error" -quiet | Select-Object $server
}
catch
{
$Error >> ErrorFile.txt
}
}
}
catch
{
$_.Exception.Message >> Errorfile.txt
}
}
}
catch
{
$_.Exception.Message >> Errorfile.txt
}
所以方法是,如果在foreach內的任何錯誤,那麼內部catch塊將捕捉它和錯誤信息會被解析到errorfile.txt保持循環運行並將繼續處理其餘的計算機。
如果有一些問題與主$ computernames同時獲得該文件的內容,那麼它會到主catch塊與分析,並附加在errorfile.txt
希望它相應的錯誤信息幫助您瞭解try/catch的有效性
*期望的結果是什麼?你對錯誤信息感興趣嗎?或者只是計算機名稱? – vonPryz
目前只有電腦的名字。解釋整個事情。 此日誌文件與服務相關,只能生成2個錯誤,這些錯誤可以通過修復或通過重新啓動第一種情況的服務,或通過刪除第二種情況的數據庫中的重複項來實現。 目前的想法是讓計算機出現錯誤,然後嘗試改進以自動執行解決方案,因此如果錯誤500 - >重新啓動服務,如果ducplicate提取GUID並從數據庫中刪除。 但我正在一點一點的採取:) – Blodka