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

Я пытаюсь использовать powershell, чтобы получить "get" из 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".

Эхо 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 теперь показывают параметр версии следующим образом: Arg 4 - это <-VLlabel space> -> обратите внимание на отсутствие пробелов, также не работает из строки cmd.

Спасибо за любую помощь!

Джон А.

1 ответ

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

Другие вопросы по тегам