如何使用PowerShell的-filter参数排除值/文件?

时间:2013-06-07 19:51:38

标签: shell powershell powershell-v3.0

我目前正在运行PowerShell(v3.0)脚本,其中一步是检索目录中的所有HTML文件。这很有用:

$srcfiles = Get-ChildItem $srcPath -filter "*.htm*"

然而,现在我面临着必须识别所有非HTML文件... CSS,Word和Excel文档,图片等。

我想要的东西就像-ne参数和-filter参数一样。实质上,给我一切 "*.htm*"

-filter -ne不起作用,我随心所欲地尝试了-!filter,我似乎无法在MSDN上的powershell doc中找到任何内容来否定 {{ 1}}参数。也许我需要管道......?

有人有解决方案吗?

2 个答案:

答案 0 :(得分:10)

-Filter不是正确的方法。请改用-exclude参数:

$srcfiles = Get-ChildItem $srcPath -exclude *.htm*

-exclude接受string[]类型作为输入。这样,您可以排除多个扩展名/文件类型,如下所示:

 $srcfiles = Get-ChildItem $srcPath -exclude *.htm*,*.css,*.doc*,*.xls*

..等等。

答案 1 :(得分:5)

我对PowerShell有点新,但是你能管道到where命令吗?

$srcfiles = Get-ChildItem $srcPath | where-object {$_.extension -ne "*.htm*"}

我不确定您将使用“扩展”的实际属性是什么。