1. ホーム
  2. powershell

[解決済み] PowerShellで関数に複数のパラメータを渡すにはどうすればよいですか?

2022-03-20 14:21:11

質問

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

簡単なテストスクリプトです。

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の間で一貫しているようなので、明らかに、何か間違ったことをしているようです。どなたか正確に指摘していただけませんか?

解決方法は?

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