Как передать переменную в качестве аргумента команде с кавычками в powershell - PullRequest
2 голосов
/ 22 апреля 2010

Мой скрипт powershell принимает следующий параметр:

Param ($ BackedUpFilePath)

Значение, которое передается в мой скрипт:

"\ 123.123.123.123 \ Backups \ Website.7z"

У меня есть другая переменная, в которой я хочу извлечь файл:

$ WebsiteDeploymentFolder = "C: \ example"

Я пытаюсь извлечь архив с помощью следующей команды:

`7z x $ BackedUpFilePath -o $ WebsiteDeploymentFolder -aoa

Я получаю следующую ошибку:

Ошибка: не могу найти архив

Следующее работает, но мне нужно, чтобы $ BackedUpFilePath был динамическим:

`7z x '\ 123.123.123.123 \ Backups \ Website.7z' -o $ WebsiteDeploymentFolder -aoa

Я думаю, что мне нужно передать $ BackedUpFilePath в 7z с кавычками, но они, похоже, удаляются вне зависимости от того, что я пытаюсь. Я в цитате ада.

Спасибо.

РЕДАКТИРОВАТЬ: Оказывается, проблема заключалась в том, что я передавал в " (дополнительные одинарные кавычки)

1 Ответ

2 голосов
/ 22 апреля 2010

Самый простой способ работы с внешними приложениями командной строки в PowerShell (на мой взгляд) - использовать псевдонимы.Например, для меня хорошо работает следующее:

Set-Alias Szip C:\Utilities\7zip\7za.exe

$Archive = 'C:\Temp\New Folder\archive.7z'
$Filename = 'C:\Temp\New Folder\file.txt'

SZip a $Archive $Filename

PowerShell заботится о правильном разделении параметров.

...