PowerShell で関数に複数のパラメータを渡すにはどうすればいいですか? 質問する

PowerShell で関数に複数のパラメータを渡すにはどうすればいいですか? 質問する

複数の文字列パラメータを受け入れる関数がある場合、最初のパラメータには割り当てられたすべてのデータが取得され、残りのパラメータは空として渡されるようです。

簡単なテスト スクリプト:

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

おすすめ記事