Arrays 如何将2D字符串数组传递给powershell脚本?
让PSArrays 如何将2D字符串数组传递给powershell脚本?,arrays,powershell,command-line,Arrays,Powershell,Command Line,让PSscript接受String[][]的单个参数p。调用powershell时,有没有方法,如何在命令行(cmd)上本地传递等价的@(@(1,2),@(a,b)) 比如: powershell.exe -Command .\script -p "(1,2),(a,b)" 我唯一能做的就是通过“1,2,a,b”传递String[]如果在参数值周围加双引号,即使它包含逗号,该值也将被解释为字符串。如果需要一个字符串数组,可以引用每个数组的各个元素使其成为字符串。允许PowerShell将逗号解
script
接受String[][]
的单个参数p
。调用powershell时,有没有方法,如何在命令行(cmd
)上本地传递等价的@(@(1,2),@(a,b))
比如:
powershell.exe -Command .\script -p "(1,2),(a,b)"
我唯一能做的就是通过
“1,2,a,b”
传递String[]
如果在参数值周围加双引号,即使它包含逗号,该值也将被解释为字符串。如果需要一个字符串数组,可以引用每个数组的各个元素使其成为字符串。允许PowerShell将逗号解释为运算符,您将获得成功。无论是在CMD shell还是PowerShell中调用,都应该将PowerShell.exe的-Command
值用双引号括起来
例如,请使用:
Powershell.exe -Command ".\script.ps1 -p (1,2),(a,b)"
对于单个带引号的元素,可以轻松使用单引号,而不需要转义:
Powershell.exe -Command ".\script.ps1 -p ('first','second','third'),('fourth','fifth','sixth')"
另外,从技术上讲,您也可以使用数组子表达式操作符@()
Powershell.exe -Command ".\script.ps1 -p @(@(1,2),@(a,b))"
内部双引号场景:
- 内部双引号将需要转义。转义方法因调用shell而异
- 对外部程序的CMD shell调用需要对内部引号进行反斜杠转义
\
- 对外部程序的PowerShell调用需要先进行反勾选转义,然后再进行反斜杠转义
- 使用CMD的示例:
Powershell.exe -Command ".\script.ps1 -p (\"one\",\"two\"),(\"a\",\"b\")"
- 使用PowerShell的示例如下:
Powershell.exe -Command ".\script.ps1 -p (\`"one\`",\`"two\`"),(\`"a\`",\`"b\`")"
描述逗号运算符。作为二进制或一元运算符,它创建一个数组。如果包含逗号的值(对象)被引号包围,它将是[string]
而不是[object[]]]
,因为逗号被视为值的一部分,而不是分隔符或运算符。不要在整个参数-p
值周围使用引号,因为它将被解释为字符串。使用-p(1,2)、(a,b)
。如有必要,您可以引用其中的各个元素。但是,您应该引用-Command
值-->powershell.exe-Command“\script-p(1,2)、(a,b)”
。您是从cmd shell还是PowerShell运行此操作?很酷,谢谢,因此关键是正确引用并理解作为操作员的,
。