powershell - PowerShell:如何将黑名单作为 Get-ChildItem -Exclude 标志的命令参数传递
问题描述
我正在尝试获取文件夹中的文件列表,同时使用脚本 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
通过命令行为标志传递字符串列表的正确格式是什么?
解决方案
从看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*'
推荐阅读
- java - 这里真的需要装饰器模式吗?
- puppeteer - 本地 html 的 puppeteer css 未显示
- hyperledger-fabric - 如何在应用前端配置 hyperledger composer 的多用户模式?
- javascript - 表格的每一行都有复选框。但是通过单击复选框,它没有选择该行文本值
- java - netty 服务器如何通过单个端口同时支持 Http 和 Https 协议?
- django - 单击时导航栏中的引导下拉菜单不显示下拉菜单
- java - 如果我关闭 PreparedStatement,数据库中的缓存会丢失吗?
- javascript - 如何让网页只显示一次?
- terraform - 使用 Terraform 在 AWS 上创建实例时出错
- html - 讲述人阅读空文档以获取纯文本信息模式弹出窗口