web-dev-qa-db-ja.com

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
Maxim V. Pavlov

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

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

Get-Content $targetFilePath | & $appCmd $AllArgs

例については、これを参照してください StackOverflowの回答

4
Frank Thomas