Powershell计算值在where-object子句中

问题描述 投票:0回答:1

我正在尝试使我的Powershell脚本尽可能简单。但是我在哪里对象子句有麻烦。以下代码可以满足我的要求:

# 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,但是我仍然想知道为什么这不起作用。

我正在尝试使我的Powershell脚本尽可能简单。但是我在哪里对象子句有麻烦。以下代码满足我的要求:#定义计算变量$ mytime = @ {...

windows powershell
1个回答
1
投票

$ myeid只是一个带有字符串和脚本块的哈希表。选择对象已编程为可以使用它。您必须以某种方式运行脚本块$ myeid.e才能获得价值。这接近了。没有括号,“-eq 6005”将被忽略。我将0xf0000添加到6005。

© www.soinside.com 2019 - 2024. All rights reserved.