我正在尝试将数组%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。我在这里做错了什么?
答案 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]
}