Powershell - 无法打印哈希值

时间:2013-08-07 13:58:02

标签: hash parameters powershell-v2.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

我哪里错了???

1 个答案:

答案 0 :(得分:1)

不知道从哪里开始...

首先 - 你不会在任何时候创建哈希...... @($args)什么都不做:$ args已经是一个数组,@()只对确保表达式将生成一个数组...哈希文字是@{}

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

param (
    $Shape,
    $Size,
    $Color
)

Write-Host Color is $Color

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

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

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