Проблемы с использованием 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'
, без каких-либо встроенных кавычек (третий вариант указан в верхней части этого ответа).