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で上記のスクリプトの正しい代替方法を教えてください。
PowerShellパイプは左側の入力を受け取り、それを右側のコマンドに渡します。この場合、コマンドの出力をGet-Content
に渡します。これは、入力パラメーターを取りません。
入力が左から右に流れるようにコールラインを変更します。
Get-Content $targetFilePath | & $appCmd $AllArgs
例については、これを参照してください StackOverflowの回答 。