鉴于:
# test1.ps1
param(
$x = "",
$y = ""
)
&echo $x $y
Run Code Online (Sandbox Code Playgroud)
像这样使用:
powershell test.ps1
Run Code Online (Sandbox Code Playgroud)
输出:
> <blank line>
Run Code Online (Sandbox Code Playgroud)
但那就错了:
test.ps1 -x "Hello, World!" -y "my friend"
Run Code Online (Sandbox Code Playgroud)
输出:
Hello,
my
Run Code Online (Sandbox Code Playgroud)
我期待看到:
Hello, World! my friend
Run Code Online (Sandbox Code Playgroud)
Nik*_*yev 22
嗯,这是一个cmd.exe问题,但有一些方法可以解决它.
使用单引号
powershell test.ps1 -x 'hello world' -y 'my friend'
Run Code Online (Sandbox Code Playgroud)使用-file参数
powershell -file test.ps1 -x "hello world" -y "my friend"
Run Code Online (Sandbox Code Playgroud).bat使用以下内容创建包装器
@rem test.bat
@powershell -file test.ps1 %1 %2 %3 %4
Run Code Online (Sandbox Code Playgroud)
然后叫它:
test.bat -x "hello world" -y "my friend"
Run Code Online (Sandbox Code Playgroud)小智 7
在我的例子中,一个可能的解决方案是嵌套单引号和双引号。
test.ps1 -x '"Hello, World!"' -y '"my friend"'
Run Code Online (Sandbox Code Playgroud)