我有一个很长的程序就是这样:
[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 查询)?
欢迎提供有关代码健全的建议。
答案 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,请安装驱动程序。