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

时间:2018-09-27 00:05:41

标签: powershell

我正在尝试获取文件夹中的文件列表,同时使用 脚本文件。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标志传递字符串列表的正确格式是什么?

1 个答案:

答案 0 :(得分:3)

通过查看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*'