Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用两个Where命令运行两个检查_Where_Powershell 4.0 - Fatal编程技术网

使用两个Where命令运行两个检查

使用两个Where命令运行两个检查,where,powershell-4.0,Where,Powershell 4.0,我正在使用这个命令 Where {$_.Extension -match "zip||rar"} 但是也需要使用这个命令 Where {$_.FullName -notlike $IgnoreDirectories} 我应该像中那样使用&&或II吗 Where {$_.Extension -match "zip||rar"} && Where {$_.FullName -notlike $IgnoreDirectories} 或 ? 我试图完成的是提取每个zip和rar文件

我正在使用这个命令

Where {$_.Extension -match "zip||rar"}
但是也需要使用这个命令

Where {$_.FullName -notlike $IgnoreDirectories}
我应该像中那样使用&&或II吗

Where {$_.Extension -match "zip||rar"} && Where {$_.FullName -notlike $IgnoreDirectories}

?

我试图完成的是提取每个zip和rar文件,但我想跳过提取我的一些目录中的zip或rar文件。最好的解决方案是什么?

如果有疑问,请阅读

Windows PowerShell支持以下逻辑运算符

  • -和
    逻辑与。仅当两个语句都为真时才为真
  • -或
    逻辑或。如果其中一条或两条语句都为真,则为真
  • -xor
    逻辑异或。仅当其中一条语句为真,另一条语句为假时,才为真
  • -非
    逻辑非。否定它后面的语句
  • 逻辑不是。否定它后面的语句。(与
    相同-非
将这两个子句放在同一脚本块中,并使用适当的逻辑运算符连接它们。对于两个子句之间的逻辑AND,请使用
-和

Where-Object {
  $_.Extension -match "zip||rar" -and
  $_.FullName -notlike $IgnoreDirectories
}
对于两个子句之间的逻辑OR,请使用
-或

Where-Object {
  $_.Extension -match "zip||rar" -or
  $_.FullName -notlike $IgnoreDirectories
}
你的情况可能是前者



请注意,正则表达式
zip | | rar
匹配任何扩展名,因为这两个
之间的字符串为空。若要仅匹配扩展名为
.rar
.zip
的项目,请删除一个管道:
$\uuu.extension-match“zip | rar”

您的建议无效,因为我没有收到错误“您必须在表达式或语句中意外标记“$.FullName”后提供一个值表达式。”我如何解决此错误?我想这就是为什么我需要两个独立的where's。这似乎可以解决表达式问题,但它会起作用吗?其中{($.Extension-match“zip | | | prd”)-和($.FullName-notlike$ignore)}应该是
$\uuuu
,而不仅仅是
$
。不知道下划线是怎么丢失的。已修复。不需要括号,因为
-match
-notlike
运算符的值高于逻辑运算符的值。此外,正则表达式中仍有双管道,因此表达式仍将匹配任何扩展。除此之外,条件是否有效取决于
$ignore
的值以及您希望它排除的内容。谢谢,在我当前的过程完成后,我将尝试您的建议并删除括号。
Where-Object {
  $_.Extension -match "zip||rar" -or
  $_.FullName -notlike $IgnoreDirectories
}