0
powershell 2.0で期待されているように、splatを使用して関数にコマンドライン引数を渡しても機能しません。私はこれがユーザーエラーだと確信していますが、私は解決策を見つけることができませんでした。Powathellで期待通りに機能しないSplatを使用してコマンドライン引数を渡す2
一言で言えば、 スクリプトのグローバルパラメータを抽出したら、コマンドライン に指定されたパラメータを直接関数に渡そうとしています。次のスクリプトは、私が見ている問題の私MCVEです:
# Named parameters.
Param([switch]$Foo)
# Function
function my_function {
Param(
[string]$Bar,
[string]$Baz,
[string]$Bat
)
Write-Output "==========="
Write-Output "Value of function parameters:"
Write-Output $Bar
Write-Output $Baz
Write-Output $Bat
Write-Output "==========="
}
Write-Output "==========="
Write-Output "Value of `$args:"
Write-Output $args
Write-Output "==========="
my_function @args
$h = @{ Bar=0; Baz=1; Bat=2 }
my_function @h
私の出力は、次のとおりです。
PS C:\temp> .\test-script -Bar 0 -Baz 1 -Bat 2
===========
Value of $args:
-Bar
0
-Baz
1
-Bat
2
===========
===========
Value of function parameters:
-Bar
0
-Baz
===========
===========
Value of function parameters:
0
1
2
===========
PS C:\temp>
splat
機能の私の理解に基づいて、2つのValue of function parameters
セクションは同じはずです。
今すぐ表示されます。私はこれを理解しようとしていたときに、何度もドキュメントを読んで、その小さな宝石を正しく見ていました。 –
スプラットはv2の機能ですが、使用しようとしている特定のスプラット機能にv3が追加されました。 –