[英]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.