2017-02-27 5 views
1

PowerShellのスプラット機能を明白に理解できないか、誤解していると思います。PowerShellスプラットが機能しない

ハッシュテーブルを使用して、カスタム関数に引数を渡していますが、単純な例でも引数を受け取りません。

ファイル:テストSplat.ps1

function Test-Splat 
{ 
    param(
     [Parameter(Mandatory=$true)][string]$Name, 
     [Parameter(Mandatory=$true)][string]$Greeting 
    ) 
    $s = "$Greeting, $Name" 
    Write-Host $s 
} 

そしてスプラッティングでこれを実行しようとするが、2番目のパラメータの値を求めます。

. .\Test-Splat.ps1 
$Params = @{ 
    Name = "Frank" 
    Greeting = "Hello" 
} 
Test-Splat $Params 

は、私はスプラッティングなしで直接これを使用する場合は、それが関係していますならば、それは

Greeting: [PS] C:\>Test-Splat -Name "Frank" -Greeting "Hello" 
Hello, Frank 

の作品、私はPowerShellの下、Exchange管理シェルの中にこれをやっている次のような結果

cmdlet Test-Splat at command pipeline position 1 
Supply values for the following parameters: 
Greeting: 

を生成します3.0

[PS] C:\>$PSVersionTable.PSVersion 

Major Minor Build Revision 
----- ----- ----- -------- 
3  0  -1  -1 

答えて

6

実際には何かが欠けています。それは、$シンボルの代わりに@シンボルを使用する関数またはコマンドレットのパラメータとして変数をスプラッシュする場合です。あなたの例では、変数を表示する行は次のようになります:

Test-Splat @Params 
+0

いつも何か簡単です。アー。それはそれでした – Kirk

関連する問題