1
远程运行'Start-Process':如何显示标准输出?
我有一个用于在远程计算机上安装软件的PowerShell脚本。 到目前为止,我已成功使用以下代码: $prog = "ping" $arg = "localhost" $computername = "MACHINE01" invoke-command -computername $computername {param($p,$a)& $p $a} -ArgumentList $prog,$arg 我现在需要安装MSI,例如。 'msiexec / i c:\ file.msi / passive'。 我无法让MSIEXEC将“MSIEXEC”之后的所有内容视为参数。 相反,PowerShell只是尝试将其作为一个大命令执行。 我曾经尝试了很多事情,主要涉及文字引号的放置,但无法使其发挥作用。 我现在放弃了调用操作符(&),转而使用'-ArgumentList'参数的'Start-Process'。 MSI现在可以正确执行。大! invoke-command -computername $computername {param($p,$a) start-process $p -argumentlist $a -nonewwindow -wait -redirectstandardoutput c:\output.txt; get-content c:\output.txt} -ArgumentList $prog,$arg “Start-Process”的问题在于,当使用“Invoke-Command”远程运行时,它不会产生任何控制台输出。 我不得不求助于将输出重定向到文件然后读取文件。有没有更好的办法?