2016-05-11 4 views
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セクションは同じはずです。

答えて

1

疑問がある場合には、documentationを読む:Windows PowerShellの3.0に始まり

、あなたはまた、コマンドのすべてのパラメータを表現するためにスプラッティングを使用することができます。

+0

今すぐ表示されます。私はこれを理解しようとしていたときに、何度もドキュメントを読んで、その小さな宝石を正しく見ていました。 –

+0

スプラットはv2の機能ですが、使用しようとしている特定のスプラット機能にv3が追加されました。 –

関連する問題