OR和AND运算符在里面?过滤

时间:2014-08-28 07:40:45

标签: powershell

我有一个很长的程序就是这样:

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

我还有一些COMPUTERS.COMPUTER与$env:computername进行比较。

如果至少有一个COMPUTERS.COMPUTER -eq "$env:computername",我该如何安装打印机?或者我如何在?过滤器中包含OR和AND,以及可能的()。

哪里可以找到?过滤器的含义(Google无法使用 monocarachter 查询)?

欢迎提供有关代码健全的建议。

2 个答案:

答案 0 :(得分:0)

请参阅 Using the Where-Object Cmdlet

Get-Process | Where-Object { ($_.handles -gt 200) -and ($_.name -eq "svchost") }

请注意,没有关联运算符()(未在此页面上写明)。

答案 1 :(得分:0)

此处您的代码段更具可读性:

[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,请安装驱动程序。