PowerShell を使用して実行可能ファイルに入力をパイプラインする

PowerShell を使用して実行可能ファイルに入力をパイプラインする

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 の上記のスクリプトの正しい代替手段についてご助言ください。

答え1

PowerShell パイプは左側で入力を受け取り、それを右側のコマンドに渡します。この場合、Get-Content入力パラメータを受け取らない にコマンドの出力を渡します。

入力が左から右に流れるようにコールラインを変更します。

Get-Content $targetFilePath | & $appCmd $AllArgs

これを見てStackOverflowの回答例えば。

関連情報