我有一个用于在远程计算机上安装软件的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”远程运行时,它不会产生任何控制台输出。 我不得不求助于将输出重定向到文件然后读取文件。有没有更好的办法?