我已经编写了一个脚本,使用Microsoft.Update. SessionCOM对象在计算机上搜索/下载/安装WindowsUpdates。当在本地运行时,它工作正常,但是当通过远程会话或通过Invoke-Command运行时,我在Microsoft.Update.Session.CreateUpdateDownloader()上收到访问被拒绝(0x 80070005)错误
如果我尝试直接创建Downloader对象,我会收到相同的错误,代码重现该问题:
$oUpdateDownloader = new-object -com "Microsoft.Update.Downloader"
字符串
我是远程机器上的管理员,向机器传递凭证(显式地为我自己或任何其他管理员帐户)似乎不会改变任何事情。
我已经看到这个错误发布了很多次,但似乎没有任何关于解决问题的信息.
有什么想法吗
6条答案
按热度按时间wixjitnu1#
当您处于远程PowerShell会话中时,此远程计算机上的登录会话将标记为“网络”登录(登录类型:3).对于一些晦涩的(安全?sell SCCM?)原因,Windows Update Agent COM APIs are restricted的一部分只能由本地登录的管理员使用。
建议使用PsExec和计划任务作为解决方法。
IMO,最无缝(并且仍然安全 * 能够 *)的解决方案是促进PowerShell Session Configurations/JEA的RunAs风格的“本地虚拟帐户”功能。通常,JEA用于"restrict"用户可以在远程计算机上做什么PowerShell明智的,但我们(ab-)在这里使用它来获得完全访问,就好像我们是一个本地登录的管理员。
(1.)创建一个新的无限制(和持久!)
ComputerB
(远程服务器)上的会话配置:字符串
(2.)从
ComputerA
(本地客户端)连接到ComputerB上的无限制会话配置:型
nr7wwzry2#
这是一个已知问题。实际的COM对象本身似乎存在错误,因为使用VBScript、PowerShell甚至C#时都会出现此问题。有一篇很好的文章讨论了如何使用PowerShell管理Windows Update,可以在here中找到。
解决方法是在计算机上设置一个计划任务,您可以根据自己的需要调用该任务。
6xfqseft3#
使用PsExec(http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx)通过脚本文件远程执行PowerShell:
字符串
我使用了http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html中详细介绍的脚本,并且可以使用psexec远程执行它来下载和安装更新。
wmtdaxz34#
这窗口更新代码是不可调用的形式一个远程机器.在web上有一些解决方法,包括使用psexec和脚本(powershell或vbscript)。
我自己使用WUInstall,BoeProx已经记录了一些替代方案,并开始了一个项目PoshPAIG。我在使用这个之前换了工作,所以不知道它是否有效。
2ul0zpep5#
另一种解决方案是使用PowerShell更改Windows注册表设置,并可选地重新启动
wuauserv
以使更改生效。例如,在Windows Server 2008R2中,可以在以下位置找到自动更新设置:
字符串
flvtvl506#
感谢Argonym和Questioner:我根据argonym给出的解决方案编写了脚本,并做了一个小改动,使我可以从脚本文件而不是命令提示符使用它:
字符串
运行它的完整示例如下:script example on github