代码如下所示:
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,当 get-winevent cmdlet 找不到与 XML 命令字符串中的条件匹配的任何事件时,它工作得很好。但是,问题在于:如果 XML 命令字符串无效,则会在 $error 变量而不是 $eventerr 变量中创建错误。我想将该错误存储在我的自定义错误变量中,但我不知道它来自哪里或生成它的原因。或者为什么它实际上不在我的自定义变量中。当我查看这两种不同类型的错误时,我得到的输出如下:
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...”错误放入我的自定义错误变量中?