如何将带空格的字符串传入PowerShell?

010*_*101 10 powershell

鉴于:

# 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问题,但有一些方法可以解决它.

  1. 使用单引号

    powershell test.ps1 -x 'hello world' -y 'my friend'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用-file参数

    powershell -file test.ps1 -x "hello world" -y "my friend"
    
    Run Code Online (Sandbox Code Playgroud)
  3. .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)


Tob*_*bin 8

可以使用反引号 ` 来转义空格:

PS & C:\Program` Files\\....
Run Code Online (Sandbox Code Playgroud)


小智 7

在我的例子中,一个可能的解决方案是嵌套单引号和双引号。

test.ps1 -x '"Hello, World!"' -y '"my friend"'
Run Code Online (Sandbox Code Playgroud)