位置对象子句中的 Powershell 计算值



我试图让我的Powershell脚本尽可能简单。但是我在使用where-object子句时遇到了问题。以下代码执行我想要的操作:

# define calculated variables 
$mytime = @{label="Time";expression={$_.timegenerated}}
$myeid  = @{l="EID";e={$_.instanceid -band 0xffff}}
$mymsg  = @{l="Msg 1st 20";e={$_.message.substring(0,20)}}
# get data
Get-Eventlog system |
where-object { ( $_.instanceid -band 0xffff ) -eq 6005} |
select-object -first 10 instanceid,
$mytime,
$myeid,
$mymsg

但我认为如果 where 对象可以使用$myeid会更简单

...
where-object { $myeid -eq 6005} |
...

但是当我使用这个where-object子句时,我没有得到任何结果。我尝试了将其包装在大括号、括号和 $(...( 中的各种组合,但没有运气。我错过了什么?

后来,我发现已经有一个脚本属性来提取 EventID,但我仍然想知道为什么这不起作用。

$myeid只是一个带有字符串和脚本块的哈希表。 选择对象被编程为使用它。 不知何故,您必须运行脚本块 $myeid.e 才能从中获取值。 这接近您的原始代码。 如果没有括号,"-eq 6005"将被忽略。 我在 6005 中添加了0xf0000。

$myeid  = @{l="EID";e={$_.instanceid -band 0xffff}}
@{instanceid=989045} | where-object { (& $myeid.e) -eq 6005}
Name                           Value
----                           -----
instanceid                     989045

相关内容

  • 没有找到相关文章

最新更新