相关疑难解决方法(0)

使用 winrm 和 Microsoft.Update.Session 远程修补服务器的问题

我有一个带有 Windows 2003、2008 和 2008r2 服务器的网络。我有一个 powershell 脚本,我编写它来使用“Microsoft.Update”com 对象修补本地机器。(类似于 Windows 更新 PowerShell 远程处理。)我的脚本在本地运行良好,但我想远程使用它的功能,因为我有相当数量的服务器需要管理。在这种情况下,它会掉下来(类似于没有解决的其他帖子)。

然而,我能够将失败缩小到特定类的两种方法。

(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()
Run Code Online (Sandbox Code Playgroud)

如果您以管理员身份在本地的 powershell 中运行这些,则不会有任何问题。如果您尝试使用 invoke-command(或 enter-session 或 winrs),您将收到以下错误。(这是使用 localhost 进行测试,但任何主机都可以。我还尝试了不同的身份验证方法,例如 credssp 和 kerberos。);

PS C:\> Invoke-Command -ComputerName localhost -ScriptBlock { (New-Object -ComObject "microsoft.update.session").createUpdateDownloader()}
Exception calling "CreateUpdateDownloader" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005
 (E_ACCESSDENIED))"
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation
Run Code Online (Sandbox Code Playgroud)

我在博客上看到这是一个错误,但没有备份该声明。存在两种解决方法,但都不让我高兴。

  • 使用 psexec 以系统用户身份运行命令。PSExec 是我试图不使用的,因为它已被证明不可靠。我也想要一个纯粹的 powershell 解决方案。
  • 创建一个计划任务并告诉它以系统用户身份运行您的脚本。(通过他的帖子)这不仅很混乱,而且我不会有更新结果。我必须登录到文件或更新数据库或其他东西。

我对在主机上远程运行更新的其他方法持开放态度,因为这似乎是很多人都遇到的问题。

我找到了 …

powershell windows-server-2003 windows-server-2008 windows-update winrm

11
推荐指数
2
解决办法
9100
查看次数