Проблемы с использованием powershell для безопасного использования источника по метке

Я пытаюсь использовать powershell, чтобы выполнить "get" из srcSafe, используя метку, содержащую пробелы.

Я читал то, что кажется многочисленными сообщениями о том, как передавать параметры w/spaces в 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"

Просто для того, чтобы запутать что-то, начинает работать процесс:

$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 - это пробел > → не содержать пробелов, также не работает из строки cmd.

Thanx для любой помощи!

Джон А.

Ответ 1

В cmd кавычки были бы использованы для обеспечения передачи label space как части аргумента -VL. Поскольку версия Start-Process работает с аргументом результата -VLlabel space, я бы попробовал позвонить ss с помощью '-VLlabel space' без каких-либо встроенных кавычек (третий вариант, указанный в верхней части этот ответ).