Com Powershell远程:Microsoft.Update.Session,拒绝访问:0x80070005

Com Powershell远程:Microsoft.Update.Session,拒绝访问:0x80070005,com,powershell,Com,Powershell,我已经编写了一个脚本,使用Microsoft.Update.Session COM对象在计算机上搜索/下载/安装Windows更新。当在本地运行时,它工作正常,但是当通过远程会话或调用命令运行时,我在Microsoft.Update.session.CreateUpdateDownloader()上收到一个拒绝访问(0x80070005)错误 如果我试图直接创建Downloader对象,我会收到相同的错误,代码会重现问题: $oUpdateDownloader = new-object -com

我已经编写了一个脚本,使用Microsoft.Update.Session COM对象在计算机上搜索/下载/安装Windows更新。当在本地运行时,它工作正常,但是当通过远程会话或调用命令运行时,我在Microsoft.Update.session.CreateUpdateDownloader()上收到一个拒绝访问(0x80070005)错误

如果我试图直接创建Downloader对象,我会收到相同的错误,代码会重现问题:

$oUpdateDownloader = new-object -com "Microsoft.Update.Downloader" 
我是远程机器上的管理员,向机器传递凭据(明确地为我自己或任何其他管理员帐户)似乎不会改变任何事情

我已经看到这个错误贴了很多次了,但是似乎没有任何关于解决这个问题的信息


有什么想法吗?

这是一个众所周知的问题。实际COM对象本身似乎有一个bug,因为在使用VBScript、PowerShell甚至C#时都会出现这个问题。有一篇很好的文章讨论了如何使用PowerShell管理Windows Update


解决方法是在计算机上设置一个计划任务,您可以根据自己的需要调用该任务。

远程计算机无法调用windows update代码。web上有一些解决方法,包括使用psexec和脚本(powershell或vbscript)


我使用了我自己,记录了一些备选方案,并启动了一个项目PoshPAIG。我在使用它之前移动了作业,所以不知道它是否有效

另一种解决方案是使用PowerShell更改Windows注册表设置,并可选择重新启动
wauserv
,以使更改生效

例如,在Windows Server 2008R2中,可以在以下位置找到自动更新设置:

HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update
使用PsExec()使用脚本文件远程执行PowerShell:

psexec -s \\remote-server-name C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe \\server\script.ps1

我使用了中详细介绍的脚本,我可以使用psexec远程执行它以下载和安装更新。

当您处于远程PowerShell会话中时,您在此远程计算机上的登录会话将标记为“网络”登录(登录类型:3)。 由于一些模糊的原因(安全性?出售SCCM?),部分内容只能由本地登录的管理员使用

建议使用PsExec和计划任务作为解决方法

在我看来,最无缝(而且仍然安全)的解决方案是促进PowerShell/的RunAs风格“本地虚拟帐户””功能。 通常,JEA习惯于用户在远程计算机PowerShell wise上所能做的事情,但我们(ab-)在这里使用它来获得完全访问权限,就像我们是本地登录的管理员一样

(1.)在
ComputerB
(远程服务器)上创建一个新的不受限制(和持久的!)会话配置:

New PSSessionConfigurationFile-RunAsVirtualAccount-Path。\VirtualAccount.pssc
#注意:这将重新启动WinRM服务:
注册PSSessionConfiguration-Name'VirtualAccount'[-ShowSecurityDescriptorUI]-路径。\VirtualAccount.pssc-Force
#检查权限属性:
获取PSSessionConfiguration-名称“VirtualAccount”
#这些用户将完全不受限制地访问系统!
(2.)从
ComputerA
(本地客户端)连接到ComputerB上的无限制会话配置:

New PSSession-ComputerName'ComputerB'-ConfigurationName'VirtualAccount'|输入PSSession
[计算机B]:新对象-com“Microsoft.Update.Downloader”#耶!

我知道这是一项安全“功能”——我想知道我现在是不是有点容易上当受骗了!功能/错误。。。都是相对的:)