0

我正在编写一个简单的脚本来更熟悉 powershell。

此脚本将输入参数读入哈希

$states = @($args)

$states

write-host Color is $states.color

在命令行上,我设置了以下值

$shape = 'circle'; $color = 'pink'; $size = 'large'

然后我使用以下命令调用程序

.\shapes_n_colors.ps1  $shape $size $color

而且,我得到以下输出:

circle
large
pink
Color is

我无法弄清楚为什么 $states.color 是空白的。我期待输出“颜色是粉红色”

我正在关注这篇文章,http ://technet.microsoft.com/en-us/library/hh847780.aspx

我哪里错了???

4

1 回答 1

1

不知道从哪里开始...

首先 - 你不会在任何时候创建散列......@($args)不做任何事情: $args 已经是一个数组,并且@()仅用于确保表达式将产生一个数组......散列文字是@{}.

下一步:您的脚本将不知道您为传递给它的变量使用了什么名称。它将看到三个字符串。我建议使用param()来获取命名参数(默认情况下也是位置参数,因此调用脚本不会有太大变化):

param (
    $Shape,
    $Size,
    $Color
)

Write-Host Color is $Color

当你用你的语法尝试它时,它会产生预期的结果。但是等等,还有更多。;) 有了这个,你可以运行你的脚本而不需要记住参数顺序:

.\shapes_n_colors.ps1 -Color White -Shape Circle -Size Small

更不用说将为您完成此命名参数。

于 2013-08-08T07:32:49.710 回答