我正在编写一个简单的脚本来熟悉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
我哪里错了???
答案 0 :(得分:1)
不知道从哪里开始...
首先 - 你不会在任何时候创建哈希...... @($args)
什么都不做:$ args已经是一个数组,@()
只对确保表达式将生成一个数组...哈希文字是@{}
。
下一步:你的脚本将不知道你用于传递给它的变量的名称。它会看到三个字符串。我建议使用param()
来获取命名的参数(默认情况下也是位置参数,因此调用脚本不会有太大变化):
param (
$Shape,
$Size,
$Color
)
Write-Host Color is $Color
当您使用语法进行尝试时,它会产生预期的结果。但等等,还有更多。 ;)有了这个,您可以运行您的脚本,而无需记住参数顺序:
.\shapes_n_colors.ps1 -Color White -Shape Circle -Size Small
更不用说将为您完成此命名参数。