使用 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 上的回答举个例子。

相关内容