PowerShell:如何将黑名单作为 Get-ChildItem -Exclude 标志的命令参数传递



我正在尝试获取文件夹中的文件列表,同时使用 脚本文件.ps1:

Param(
[string]$blacklist,
[string]$build_path
)
$filesToBuild = Get-ChildItem $build_path -Recurse -Exclude $blacklist
foreach ($file in $filesToBuild) {
Write-Verbose -Verbose "File: $file"
}

如果我使用命令调用脚本

.files.ps1 -build_path "C:SomeFolder" -blacklist 'Dev*'

它将排除带有Dev*的文件,但是如果我传入文件列表-blacklist 'Dev*, Microsoft*'它不会忽略任何文件。我尝试过没有引号和没有引号。

但是,将其硬编码到脚本中是有效的:

$filesToBuild = Get-ChildItem $build_path -Recurse -Exclude Dev*, Microsoft*

通过命令行传入-Exclude标志的字符串列表的正确格式是什么?

通过查看Get-Help Get-ChildItem我看到-Exclude参数接受一个字符串数组,因此您应该将其传递'Dev*','Microsoft*',而不是将其传递'Dev*, Microsoft*'。您还必须更新参数以接受字符串数组。

Param(
[string[]]$blacklist,
[string]$build_path
)
$filesToBuild = Get-ChildItem $build_path -Recurse -Exclude $blacklist
foreach ($file in $filesToBuild) {
Write-Verbose -Verbose "File: $file"
}
.files.ps1 -build_path "C:SomeFolder" -blacklist 'Dev*','Microsoft*'

最新更新