我有一个带有变量的PowerShell脚本,该变量被管道传输到"where-object“。这个where子句包含多个必须为true的语句(-AND)和两个语句,其中至少一个必须为true (-XOR)。我该怎么组织他们?到目前为止,我尝试过的任何事情都没有奏效:
$var | Where-Object { condition1 -AND condition2 -AND condition3 -XOR condition4 }
$var | Where-Object { condition1 -AND condition2 -AND (condition3 -XOR condition4) }
$var | Where-Object { (condition1 -AND condition2) -AND condition3 -XOR condition4 }
$var | Where-Object { (condition1 -AND condition2) -AND (condition3 -XOR condition4) }你能帮帮我吗?
提前感谢!
发布于 2015-04-01 06:38:57
感谢您的所有建议和可能性,以检查结果的条件。最后,我使用了一个稍微不同的解决方案:
if ( $var | Where-Object { condition1 -AND condition2 -AND condition3 } ) {
Write-Host "Do some stuff"
}
else {
if ( $var | Where-Object { condition1 -AND condition2 -AND condition4 } ) {
Write-Host "Do other stuff"
}
}发布于 2015-03-27 14:38:20
你试过这个吗?
$var | Where-Object { condition1 -AND condition2 -AND (condition3 -OR condition4) } 顺便提醒一下,下面是您感兴趣的微软官方手册页:
-or Logical or. TRUE when either (1 -eq 1) -or (1 -eq 2)
or both statements are TRUE. True
-xor Logical exclusive or. TRUE (1 -eq 1) -xor (2 -eq 2)
only when one of the statements False
is TRUE and the other is FALSE.既然我在这里,另一个问题是:根据$var对象的大小和结构,检查所有对象的所有条件可能需要一些时间,您应该过滤它:
提醒:是Where-Object的自然别名:
$var | ? { condition1 } |? { condition2 } |? { condition3 -OR condition4 } 这可能会帮助你的剧本更快..。
https://stackoverflow.com/questions/29303031
复制相似问题