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

0

Мне нужно выполнить следующую команду в 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.

Максим В. Павлов
источник

Ответы:

2

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

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

Get-Content $targetFilePath | & $appCmd $AllArgs

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

Фрэнк Томас
источник