Я пытаюсь использовать 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 для любой помощи!
Джон А.