簡體   English   中英

PowerShell splatting無法正常工作

[英]PowerShell splatting not working

我相信我錯過了一些明顯的東西,或者誤解了PowerShell的splatting功能。

我正在使用哈希表將參數傳遞給自定義函數,但它似乎不會在一個簡單的例子中使用參數。

文件:Test-Splat.ps1

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

然后嘗試使用splatting執行此操作,請求第二個參數的值。

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

產生以下結果

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

如果我直接使用它而不用splatting,它可以工作

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

如果它是相關的,我在PowerShell 3.0下的Exchange命令行管理程序中執行此操作

[PS] C:\>$PSVersionTable.PSVersion

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

你確實遺漏了一些東西,那就是當你想要變量作為函數或cmdlet的參數時,使用@符號而不是$符號。 在您的示例中,您展開變量的行將如下所示:

Test-Splat @Params

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM