
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の回答例えば。