Powershell 还是里面的接线员?滤波器

Powershell 还是里面的接线员?滤波器,powershell,Powershell,我有一个很长的计划,它的作用如下: [xml]$data = get-content "c:\somedatafile.xml" $data.PRINTERS.PRINTER ` | ? { $_.USERS.USER -eq "$env:username" } ` | ForEach-Object{ # install some printer with $_ } 我还有一些计算机。要与$env:computername进行比较的计算机 如果至少有一台COMPUTERS.COMP

我有一个很长的计划,它的作用如下:

[xml]$data = get-content "c:\somedatafile.xml"
$data.PRINTERS.PRINTER `
| ? { $_.USERS.USER -eq "$env:username" } `
| ForEach-Object{
      # install some printer with $_
}
我还有一些计算机。要与
$env:computername
进行比较的计算机

如果至少有一台
COMPUTERS.COMPUTER-eq“$env:computername”
,如何安装打印机?或者如何在
过滤器中包含Or和,以及可能的()

在哪里可以找到
过滤器的含义(谷歌在monocarachter查询中失败)

欢迎对代码健全性提出建议。

请参阅


请注意,没有关联运算符is
()
(未在本页上写入)。

这里是您的代码片段,更具可读性:

[xml]$data = get-content "c:\somedatafile.xml"
$data.PRINTERS.PRINTER | Where-Object -FilterScript { $_.USERS.USER -eq "$env:username" } | ForEach-Object {
      # install some printer with $_
}


否您必须在foreach中添加一个neq If语句,并检查
COMPUTERS.COMPUTER-eq“$env:computername”
。如果为true,请安装驱动程序。

where object
cmdlet的别名。现在你可以用谷歌搜索了;)和
获取有关powershell中的\u Comparison\u操作符的帮助
,以阅读有关
等的信息。您还可以查询“获取别名”以列出powershell中的所有别名。“%”和“?”也包括在内。您应该将表达式放在括号中,如($\u0.handles-gt 200)和($\u0.name-eq“svchost”)
[xml]$data = get-content "c:\somedatafile.xml"
$data.PRINTERS.PRINTER | Where-Object -FilterScript { $_.USERS.USER -eq "$env:username" } | ForEach-Object {
      # install some printer with $_
}