趕上System.Diagnostics.Eventing.Reader錯誤代碼如下所示:如何在PowerShell中
foreach ($machine in $lbx_workstations.SelectedItems)
{
$temp = (get-winevent -computername $machine -FilterXML $commandString -ErrorAction SilentlyContinue -ErrorVariable eventerr|
Select MachineName, TimeCreated, LevelDisplayName, ID, ProviderName, Message)
blah blah blah...
我做了一個自定義錯誤變量$ eventerr,這只是正常的時候一開始winevent cmdlet的找不到符合XML命令字符串中的條件的任何事件。但問題是:如果XML命令字符串無效,則會在$ error變量而不是$ eventerr變量中創建錯誤。我想將該錯誤存儲在我的自定義錯誤變量中,但我不知道它來自哪裏或產生了什麼。或者爲什麼它實際上還不在我的自定義變量中。當我看到這兩種不同類型的錯誤,這是輸出I得到:
PS C:\Temp> $error[0].fullyqualifiederrorid
System.Diagnostics.Eventing.Reader.EventLogException,Microsoft.PowerShell.Commands.GetWinEventCommand
PS C:\Temp> $error[1].fullyqualifiederrorid
NoMatchingEventsFound,Microsoft.PowerShell.Commands.GetWinEventCommand
我能趕上「NoMatchingEventsFound」錯誤的自定義變量,而不是System.Diagnostics.Eventing ...錯誤。
有沒有什麼辦法讓「System.Diagnostics.Eventing ...錯誤到我的自定義錯誤變量?
您對錯誤來自哪裏的建議很有可能。我嘗試了try-catch,它沒有抓住它。也許是因爲它看起來不錯,直到get-winevent評估它?有問題的XML: <查詢ID =「0」路徑=「系統」> <選擇路徑=「系統」> * [系統[提供程序[@名稱='msiinstaller'](級別= 3或級別= 1或Level = 2) 和TimeCreated [@SystemTime > ='2013-07-09T05:00:00.000Z' 和@SystemTime < ='2013-07-10T05:00:00。000Z」]]] 你不能定義 「級別」,如果你正在使用的 「提供者」。 –
對不起......我無法弄清楚如何將xml轉換爲代碼塊。 >。< –
這是有效的XML。不知道爲什麼錯誤沒有被捕獲。我發現'-ErrorVariable'有時不起作用。我通常回退到'$ Error'。 : - | –