【发布时间】:2016-10-19 17:53:13
【问题描述】:
我有一个 PowerShell 函数,它通过逗号分隔列表接受单个参数的多个值,如下所示:
test-function -Targets 127.0.0.1, 8.8.8.8, fake.fqdn.com -FileName "c:\results.csv"
这是参数部分:
function test-function {
param(
[string[]]$Targets
[string]$FileName
)
}
我试图将一个数组作为多个目标参数放入,因此我将它们放入一个变量中,如下所示:
foreach ($target in $arrayTargets) { $temp = $temp + ", $Target" }
$Targets = $temp -replace "^, ", ""
这将导致所需的“127.0.0.1, 8.8.8.8, fake.fqdn.com” 作为变量$Targets 中的字符串。
当我尝试执行引用$Targets 变量的函数时,该函数将$Targets 解释为一个条目,而不是多个条目。这是我尝试过的相同结果:
test-function -Targets $Targets -FileName "c:\results.csv"
test-function -Targets "$Targets" -FileName "c:\results.csv"
我还尝试了几种不同的方式来创建 ArgList:
$ArgList = "-Targets $Targets -FileName `"c:\results.csv`""
test-function $ArgList
它不是将每个单独的数组条目作为参数,而是将整个字符串作为参数。
如何让这个函数接受一个数组作为多个目标?
【问题讨论】:
-
仅供参考,您的函数调用和函数定义使用不同的参数名称。这可能会让试图阅读这里发生的事情的人感到困惑。
标签: powershell parameter-passing