Вызывать-выражение с exe в Программных файлах

Я пытаюсь выполнить команду Powershell для вызова С 7 zip к на молнии папка с помощью следующей команды:

$command = $SevenZip + " a " + $targetDirForZip + $GetDateName + "_" + $dir.Name + ".7z " + $dir.FullName
Invoke-Expression $command

Переменные, питаемые в $command, уже установлены, и $SevenZip является "c:\Program Files\7-Zip\7z.exe"

Это не работает, и я пытаюсь разработать лучший способ назвать С 7 zip от Powershell. Идеи?

11
задан Guy 16 December 2009 в 20:37
поделиться

4 ответа

У меня раньше была такая же проблема. Это код (почти) прямо из сценария резервного копирования, который я использую в настоящее время:

[string]$pathToZipExe = "C:\Program Files\7-zip\7z.exe";
[Array]$arguments = "a", "-tgzip", $outputFilePath, $inputFilePath;

& $pathToZipExe $arguments;

Я привык использовать массив аргументов с оператором вызова. Он кажется более надежным, чем другие методы.

23
ответ дан 3 December 2019 в 01:44
поделиться

Вам не нужно использовать Invoke-Expression, просто используйте оператор invocation (call) & для вызова строки, которая называет команду для выполнения. Обратите внимание, что в этом случае вы хотите сохранить параметры отдельно, т.е. строка SevenZip должна быть просто путем к EXE, например:

&$SevenZip a "$targetDirForZip$GetDateName_$($dir.Name).7z" $dir.FullName
6
ответ дан 3 December 2019 в 01:44
поделиться

Дайте угадаю, он пытается вызвать «c: \ Program»?

Не уверены в правильном синтаксисе для PS, но вам понадобится что-то сделать с этим пространством.

1
ответ дан 3 December 2019 в 01:44
поделиться

На самом деле вам не нужно Invoke-Expression. Вы можете просто вызвать команду, используя амперсанд, например:

&$Command

Но есть также командлет Start-Process, который может лучше подходить для того, что вы пытаетесь сделать. Выполняя команду в виде строки, указанной выше, вы подвержены ошибкам, если $ SevenZip содержит пробелы и не заключен в кавычки. Вместо этого я бы использовал:

Start-Process $SevenZip "...rest..."
4
ответ дан 3 December 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: