Вот еще один способ без Invoke-Expression
, но с двумя переменными (команда: строка и параметры: массив).Он отлично работает для меня.Предположим, что 7z.exe
находится в системном пути.
$cmd = '7z.exe'
$prm = 'a', '-tzip', 'c:\temp\with space\test1.zip', 'C:\TEMP\with space\changelog'
& $cmd $prm
Если команда известна (7z.exe) и только параметры являются переменными, тогда это будет
$prm = 'a', '-tzip', 'c:\temp\with space\test1.zip', 'C:\TEMP\with space\changelog'
& 7z.exe $prm
BTW, *У меня тоже работает 1009 * с одним параметром, например, это работает
$cmd = '& 7z.exe a -tzip "c:\temp\with space\test2.zip" "C:\TEMP\with space\changelog"'
Invoke-Expression $cmd
PS Обычно я предпочитаю способ с массивом параметров, потому что его проще составить программно, чем построить выражение для Invoke-Expression
.