我有一个测试PowerShell V2脚本,如下所示:
function test_args()
{
Write-Host "here's arg 0: $args[0]"
Write-Host "here's arg 1: $args[1]"
}
test_args
如果我从powershell命令提示符中调用它,我会在屏幕上显示:
here's arg[0]: [0]
here's arg[1]: [1]
不是我想要的。在我可以使用之前,似乎我必须将$ args [0]和$ args [1]复制到脚本中的新变量中?如果我这样做,我可以正常使用。
有没有办法在我的代码中访问索引的$ args?我尝试过以各种方式使用花括号,但没有运气。
我最终将转向命名参数,但我正在处理的脚本(不是这个演示版)是批处理文件的直接端口。
答案 0 :(得分:38)
请改为尝试:
function test_args()
{
Write-Host "here's arg 0: $($args[0])"
Write-Host "here's arg 1: $($args[1])"
}
test_args foo bar
请注意,它是$args
而不是$arg
。此外,当您在字符串中使用PowerShell变量时,PowerShell仅替换变量的值。您不能直接使用$args[0]
之类的表达式。但是,您可以将表达式放在双引号字符串中的$()
子表达式组中,以使PowerShell评估表达式,然后将结果转换为字符串。