首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell Where-Object -如何分组条件

PowerShell Where-Object -如何分组条件
EN

Stack Overflow用户
提问于 2015-03-27 14:25:42
回答 2查看 3.5K关注 0票数 2

我有一个带有变量的PowerShell脚本,该变量被管道传输到"where-object“。这个where子句包含多个必须为true的语句(-AND)和两个语句,其中至少一个必须为true (-XOR)。我该怎么组织他们?到目前为止,我尝试过的任何事情都没有奏效:

代码语言:javascript
复制
$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) }

你能帮帮我吗?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-01 06:38:57

感谢您的所有建议和可能性,以检查结果的条件。最后,我使用了一个稍微不同的解决方案:

代码语言:javascript
复制
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"
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2015-03-27 14:38:20

你试过这个吗?

代码语言:javascript
复制
$var | Where-Object { condition1 -AND condition2 -AND (condition3 -OR  condition4) } 

顺便提醒一下,下面是您感兴趣的微软官方手册页

代码语言:javascript
复制
    -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的自然别名:

代码语言:javascript
复制
$var | ? { condition1 } |? { condition2 } |? { condition3 -OR  condition4 } 

这可能会帮助你的剧本更快..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29303031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档