PowerShell: как передать в черный список в качестве параметра команды для флага Get-ChildItem -Exclude - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь получить список файлов в папке, исключая определенные файлы, используя скрипт files.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 голосов
/ 27 сентября 2018

Из рассмотрения 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*'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...