我正在研究一個跨多臺服務器執行腳本的PowerShell腳本。 將我的腳本轉換爲exe後使用http://ps2exe.codeplex.com/Powershell嘗試趕上ExecuteNonQuery()
當我關閉窗口時,如果在try catch中捕獲到任何錯誤,我會收到一個錯誤。
$ErrorActionPreference = 'Continue'
$dataAdapter = new-object System.Data.SqlClient.SqlCommand ($ExeStatement, $connString);
$dataAdapter.Connection.Open();
$dataAdapter.CommandTimeout = 65535;
Try {
$dataAdapter.ExecuteNonQuery()}
catch{
$ErrorCounter = $ErrorCounter + 1
$dataAdapter.Connection.Close();}
finally{
$dataAdapter.Connection.Close();}
如果我刪除try catch,我可以在發現錯誤時關閉窗口。 如果我刪除$ dataAdapter.CommandTimeout = 65535;我能夠在發現錯誤時關閉窗口,但由於其中一個腳本很長,所以我需要它。 如果我將ErrorActionPreference設置爲STOP,它也可以正常工作。儘管我希望能夠在最後繼續完成錯誤並進行報告。
我在關閉窗口時從窗口收到以下錯誤。
說明:停止工作
問題簽名:
問題事件名稱:CLR20r3
問題簽名01:PROGRAMNAME.exe
問題簽名02:0.0.0.0
問題簽名03:53bdc0d9
問題簽名04:mscorlib
問題簽名05:2.0.0.0
問題簽名06:5174de33
問題簽名07:34A9
問題簽名08:18C
問題簽名09信息:System.IO.IOException
OS版本:6.1.7601.2.1.0.16.7
區域設置ID:1033
DefaultDataCollection失敗:0x8007001f
我需要腳本能夠繼續通過錯誤,但我也需要趕上錯誤。
只有當錯誤返回時,如果我拋出catch的外部關閉,或者在try內部出現相同的錯誤,它纔會導致問題。 – SecretChief