複数の文字列パラメータを受け入れる関数がある場合、最初のパラメータには割り当てられたすべてのデータが取得され、残りのパラメータは空として渡されるようです。
簡単なテスト スクリプト:
Function Test([string]$arg1, [string]$arg2)
{
Write-Host "`$arg1 value: $arg1"
Write-Host "`$arg2 value: $arg2"
}
Test("ABC", "DEF")
生成される出力は
$arg1 value: ABC DEF
$arg2 value:
正しい出力は次のようになります。
$arg1 value: ABC
$arg2 value: DEF
これは複数のマシンの v1 と v2 で一貫しているようなので、明らかに何か間違っています。正確に何が間違っているのか、誰か指摘できますか?
ベストアンサー1
PowerShell(すべてのバージョン)の関数呼び出しのパラメータは、カンマ区切りではなくスペース区切りです。また、括弧はまったく不要であり、PowerShell 2.0(またはそれ以降)では解析エラーが発生します。Set-StrictMode
-Version 2
またはそれ以上がアクティブです。括弧で囲まれた引数は .NET メソッドでのみ使用されます。
function foo($a, $b, $c) {
"a: $a; b: $b; c: $c"
}
ps> foo 1 2 3
a: 1; b: 2; c: 3