将字符串数组从命令行(.BAT文件)传递到Power Shell脚本

时间:2016-10-14 01:00:46

标签: arrays shell powershell

我正在尝试将数组%variable%从命令行传递给power shell,然后在power shell中使用此数组变量执行操作,但是我无法正确地将变量传递给power shell。当前.BAT脚本调用power shell脚本如下...

SET STRING_ARRAY="test1" "test2" "test3" "test4"
Powershell.exe -executionpolicy remotesigned -File "FILEPATH\Build_DB.ps1" %STRING_ARRAY%

然后下面的power shell脚本测试数组变量的成功切换如下:

$string_array=@($args[0])

Write-Host $string_array.length

for ($i=0; $i -lt $string_array.length; $i++) {
    Write-Host $string_array[$i]
}

但是返回的所有内容都是来自power shell的长度为1。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

好吧,没关系,我最终提出了一个适合我案例的解决方案,所以我在这里发布它,以防它对其他任何人都有好处。如果有人有更好的解决方案,请告诉我。

更改电源shell脚本,如下所示:

#The problem is that each item in the %STRING_ARRAY% variable is passed as
#an individual argument to power shell. To get around this we can just 
#store all optional arguments passed to power shell as follows.
$string_array=@($args)

#Now (if desired) we can also remove any optional arguments we don't want 
#in our new array using the following command.
$string_array = $string_array[2..($string_array.Length)]

Write-Host $string_array.length

for ($i=0; $i -lt $string_array.length; $i++) {
    Write-Host $string_array[$i]
}