访问powershell中的$ args数组

时间:2012-09-07 22:26:19

标签: powershell args

我有一个测试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?我尝试过以各种方式使用花括号,但没有运气。

我最终将转向命名参数,但我正在处理的脚本(不是这个演示版)是批处理文件的直接端口。

1 个答案:

答案 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评估表达式,然后将结果转换为字符串。