我正在尝试使用 powershell 使用包含空格的标签从 srcSafe 执行“获取”。
我已经阅读了很多关于如何将带空格的参数传递给 exe 的帖子,但我尝试过的都没有。我的问题似乎是正确提供标签。
以下是 cmd 行版本(有效)。
ss get $/sandbox/TestSSCmdLine/* -R -I-N -VL"label space"
我最简单的powershell版本是:
ss get '$/sandbox/TestSSCmdLine/*' -R -I-N '-VL\"label space\"'
当我运行 powershell cmd 时,我没有得到任何文件,并且 $lastexitcode 是“100”。
Echo args 显示了我认为应该正确的内容。
Arg 0 is <get>
Arg 1 is <$/sandbox/TestSSCmdLine/*>
Arg 2 is <-R>
Arg 3 is <-I-N>
Arg 4 is <-VL"label space">
Powershell ISE 显示相同。
DEBUG: NativeCommandParameterBinder Information: 0 : WriteLine Raw argument string: get $/sandbox/TestSSCmdLine/* -R -I-N "-VL\"label space\""
DEBUG: NativeCommandParameterBinder Information: 0 : WriteLine Argument 0: get
DEBUG: NativeCommandParameterBinder Information: 0 : WriteLine Argument 1: $/sandbox/TestSSCmdLine/*
DEBUG: NativeCommandParameterBinder Information: 0 : WriteLine Argument 2: -R
DEBUG: NativeCommandParameterBinder Information: 0 : WriteLine Argument 3: -I-N
DEBUG: NativeCommandParameterBinder Information: 0 : WriteLine Argument 4: -VL"label space"
只是为了混淆 start-process 似乎工作:
$cmd = "ss.exe"
$args = "get", '$/sandbox/TestSSCmdLine/*', "-R", "-I-N", '-VL"label space"'
$proc = start-process $cmd $args -Wait -NoNewWindow -PassThru -WorkingDir $pwd
$proc.ExitCode
另一个令人困惑的项目是 echo args 现在将版本参数显示为: Arg 4 is <-VLlabel space> -> 注意没有空格,也不适用于 cmd 行。
感谢您的帮助!
约翰·A。