我需要在 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 上的回答举个例子。