在Powershell 2中使用Splat无法正常运行将命令行参数传递给函数2

时间:2016-05-11 14:19:48

标签: powershell

使用splat将命令行参数传递给函数的功能不如我在Powershell 2.0中所期望的那样。我确定这是用户错误,但我无法找到解决方案。

简而言之,我试图传递命令行中指定的参数 直到一个函数,一旦我提取了全局参数 脚本。以下脚本是我看到的问题的主要内容:

# 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功能的理解,这两个Value of function parameters部分看起来应该相同。

1 个答案:

答案 0 :(得分:1)

如有疑问,请阅读http://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html

  

从Windows PowerShell 3.0开始,您还可以使用splatting来表示命令的所有参数。