Конвейерный ввод в исполняемый файл с помощью PowerShell

6309
Maxim V. Pavlov

Мне нужно выполнить следующую команду в PowerShell:

%windir%\system32\inetsrv\appcmd add site /in < c:\mywebsite.xml 

Я пытаюсь сделать это так:

$appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"   [String] $targetFilePath = $restoreFromDirectory + "config.xml"  $AllArgs = @('add', 'site', '/in')  & $appCmd $AllArgs | Get-Content $targetFilePath 

Но это совершенно неправильно, так как дает мне ошибку:

Входной объект не может быть привязан ни к каким параметрам для команды, так как команда не принимает конвейерный ввод, или вход и его свойства не соответствуют ни одному из параметров, которые принимают конвейерный ввод.

Пожалуйста, помогите в том, что является правильной альтернативой вышеупомянутому сценарию в PowerShell.

0

1 ответ на вопрос

2
Frank Thomas

Канал PowerShell принимает данные слева и передает их в команду справа. В этом случае вы передаете вывод вашей команды Get-Content, которая не принимает входной параметр.

Измените свою линию вызова так, чтобы ввод проходил слева направо:

Get-Content $targetFilePath | & $appCmd $AllArgs 

Посмотрите этот ответ на StackOverflow для примера.