基于多个值设置Powershell过滤器变量的正确语法是什么?

时间:2013-08-12 19:11:47

标签: syntax global-variables powershell-v2.0

我有一个PowerShell脚本,可根据选择标准处理目录中的文件。对于一次运行,我需要对所有HTML文件执行操作,因此我使用以下代码。

$bkppath = "\\filepath"
$selectionFilter = "*.htm*"  
$srcfiles = Get-ChildItem $bkpPath -filter $selectionFilter

ForEach($doc in $srcfiles) {
     do-stuff
}

对于另一次运行,我需要对目录中与 相关的任何内容采取行动,因此我想要排除*.htm**.js,{{1 }和*.ico。我无法找到将这些多个值应用于*.xml变量的正确语法。

我需要这样的东西:

selectionFilter

$selectionFilter = !("*.htm*" or ".js" or "*.xml" or "*.ico")

这两个都给我一个语法错误。

我无法在MSDN上找到任何涉及如何处理这样的多个值的内容。你能指点我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

虽然-exclude *.ico, *.js, *xml要更正排除的语法,但一个重要的警告是,应用排除的路径名必须以\*结尾才能使其正常工作。 -filter没有此要求;那就是我搞砸了。

$srcfiles = Get-ChildItem $bkpPath\* -exclude *.htm*, *.js, *.xml, *.ico将是我示例中的正确语法。