Enter-PSSession 可以工作,但 Invoke-Command 无法安装软件

Enter-PSSession 可以工作,但 Invoke-Command 无法安装软件

我遇到了一个非常奇怪的问题。如果我使用 Powershell 通过 Enter-PsSession 远程连接到另一台服务器并运行此命令,则软件会安装:

msiexec /i "c:\install\AWS\EC2LaunchV2\AmazonEC2Launch.msi" /qn /lvx C:\install\AWS\EC2Launchv2\AmazonEC2LaunchLog.txt

但是,如果我使用 Invoke-Command 和 -ScriptBlock 并运行相同的命令,它会失败。在这两种情况下,msiexec 都会创建日志文件。但是,当它失败时,它看起来像是运行回滚并以 1603 错误结束。

我能想到的它们之间的唯一区别是当前工作目录。我尝试在安装命令之前输入“cd”命令来更改到几个不同的目录,但都不起作用——“c:\windows\system32,安装文件位置,我的主目录\Documents(这是我使用 Enter-PSSession 时显示的内容)。

有人知道为什么会发生这种情况吗?或者至少,关于如何让 Invoke-Command 工作,还有其他想法吗?我需要使用它,因为我正在尝试编写脚本。

答案1

好吧,我仍然不知道为什么会有这种差异,但我发现如果我改为以 运行该命令cmd /c "msiexec ...",那么它就会这样工作。我不确定如何为需要在 msiexec 命令中使用引号的命令格式化,但幸运的是,我可以不用它们。

相关内容