我需要一些 Powershell 建议。
我需要在多个 Win08r2 服务器上安装应用程序的 MSP 更新文件。如果我在本地运行这些命令,在目标机器的 PS 窗口中,它会完全按照我的意愿运行:
$command = 'msiexec.exe /p "c:\test\My Application Update 01.msp" REBOOTPROMPT=S /qb!'
invoke-wmimethod -path win32_process -name create -argumentlist $command
正在执行的文件位于目标机器上
如果我远程连接到机器并执行这两个命令,它会打开两个 x64 msiexec.exe 进程和一个 msiexec.exe *32 进程,然后就坐在那里。
如果我重新启动服务器,它不会显示更新已安装,所以我认为这不是时间问题。
我尝试使用这两行创建和远程执行 PS1 文件,但这似乎做同样的事情。
如果有人对远程安装我的 MSP 更新有建议,我会全力以赴。
我想我已经包含了我所拥有的所有信息,但是如果缺少某些内容,请提出问题,我会填写任何空白。
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++
我的过程是:
- 读取服务器名称和管理员密码的 CSV
- 使用密码创建凭据
- 使用机器名称和凭据创建新会话
- 创建一个临时文件夹来保存我的更新 MSP 文件
- 调用将更新文件下载到目标服务器的 PS1 文件
- >>> 创建一个新的 System.Net.WebClient 对象
- >>> 使用该 Web 客户端对象从源下载到目标服务器上的位置
- 调用另一个应用刚刚下载的补丁的 PS1 文件 –>> 这就是我遇到问题的地方。
- >>> 设置如上所示的变量
- >>> 执行变量中指定的文件
- 关闭与目标服务器的会话
- 移至 CSV 中的下一个服务器...</li>
如果我打开一个 PS 窗口并手动设置变量,然后执行它(如上面两行代码所示),它工作正常。如果我在目标服务器上创建一个 PS1 文件,包含相同的两行代码,然后右键单击 >“使用 PowerShell 运行”,它将按预期/期望工作。如果我在 PowerGUI 中远程执行我的代码,它会返回一个看起来像这样的文本块,然后就坐在那里。RDP'd 进入服务器,安装程序永远不会启动。我对“返回值”值的理解是“0”表示命令成功。
PSComputerName : xx.xx.xx.xx
RunspaceId : bf6f4a39-2338-4996-b75b-bjf5ef01ecaa
PSShowComputerName : True
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH
:
__PROPERTY_COUNT : 2
__ACE:
进程
__SERIVATIONSP
: :4808
返回值:0
我什至在变量和在桌面上创建文本文件的执行之间添加了一行代码,只是为了验证我正在进入我的“executeFile”文件,并且确实创建了该文本文件。似乎它只是没有远程执行我的 MSP。
预先感谢您的协助!
猫 11。