Canalización de entrada al ejecutable con PowerShell

Canalización de entrada al ejecutable con PowerShell

Necesito ejecutar el siguiente comando en PowerShell:

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

Estoy intentando hacerlo así:

$appCmd = "$Env:SystemRoot\system32\inetsrv\appcmd.exe"      

[String] $targetFilePath = $restoreFromDirectory + "config.xml"

$AllArgs = @('add', 'site', '/in')

& $appCmd $AllArgs | Get-Content $targetFilePath

Pero esto aparentemente es incorrecto ya que me da un error:

El objeto de entrada no se puede vincular a ningún parámetro para el comando porque el comando no toma entrada de canalización o porque la entrada y sus propiedades no coinciden con ninguno de los parámetros que reciben entrada de canalización.

Ayúdeme sobre cuál es la alternativa correcta al script mencionado anteriormente en PowerShell.

Respuesta1

La canalización de PowerShell toma la entrada de la izquierda y la pasa al comando de la derecha. En este caso, está pasando la salida de su comando a Get-Content, que no toma un parámetro de entrada.

Cambie su línea de llamada para que la entrada fluya de izquierda a derecha:

Get-Content $targetFilePath | & $appCmd $AllArgs

Mira estoresponder en StackOverflowpara un ejemplo.

información relacionada