Powershell Нужно выполнить две строчки - PullRequest
1 голос
/ 03 августа 2011

У меня есть две команды, которые должны быть выполнены в PowerShell. Все остальное может быть в пакетном режиме. Я мог бы написать все это в PowerShell, но я должен убедиться, что политика выполнения установлена ​​правильно, и это может быть проблемой безопасности для наших нетадминов на этих серверах.

В моем пакетном скрипте мне нужно:

  1. Сбить кеш приложения IIS (я могу использовать AppCmd)
  2. Загрузите новый zip-файл с сервера (используя мою wget версию Powershell)
  3. Удалить все старые файлы в каталоге www
  4. Распакуйте zip-файл в каталог www
  5. Откройте кеш приложений IIS.

На Шаге 2 мои две команды powershell:

$client = new-object System.Net.WebClient
$client.DownloadFile("http://path/to/file", "file.name")

Есть ли способ объединить эти две строки в одну команду Powershell, так же, как в Unix, используя точки с запятой? Я попытался поставить точку с запятой между двумя строками и получить следующую ошибку:

Missing ')' in method call.
At line:1 char:62
+ $client.DownloadFile(  <<<< http://path/to/file )
   + CategoryInfo          : ParserError: (CloseParenToken:TokenId) [], ParentContainsErrorRecordException
   + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall

Однако внутри фактического скрипта Powershell, называемого "wget.ps1", он выполняется следующим образом:

$ powershell -c wget.ps1

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Ну, у вас есть как минимум два варианта. Первый - определить политику выполнения при запуске сценария. Это только меняет политику для одного сеанса, который вы запускаете:

powershell.exe -File 'C:\Path\To\File.ps1' -ExecutionPolicy RemoteSigned

Или вы можете просто передать команды прямо:

powershell.exe -command {$string = 'bobdee';$client.DownloadFile("http://path/to/file", "file.name")}
0 голосов
/ 12 декабря 2013

2013 Обновление:

Я не уверен, как все было в 11 году, но в эти дни вы можете сделать следующее в PowerShell:

wget "http://path/to/file" -outfile "file.name"
0 голосов
/ 04 августа 2011

Вы можете сделать это:

(new-object System.Net.WebClient).DownloadFile("http://path/to/file", "file.name")
...