2011-08-16 25 views
5

He escrito un script para buscar/descargar/instalar Windows Updates en una máquina utilizando el Microsoft.Update.Session COM Object. Cuando se ejecuta localmente funciona muy bien, sin embargo cuando se ejecuta a través de una sesión remota oa través de Invoke-Command recibo un acceso denegado (0x80070005) Error en Microsoft.Update.Session.CreateUpdateDownloader()Powershell Remote: Microsoft.Update.Session, Access Denied: 0x80070005

recibo el mismo error si intento de crear un objeto Downloader directamente, código para reproducir el problema:

$oUpdateDownloader = new-object -com "Microsoft.Update.Downloader" 

soy un administrador en la máquina remota, y que pasa credenciales (para mí de forma explícita o cualquier otra cuenta de administrador) a la máquina no parece Cambia cualquier cosa.

que he visto este error ha publicado un número de veces, pero no parece haber ninguna información sobre la solución del problema ...

¿Alguna idea?

Respuesta

3

Se trata de un problema conocido. Parece que hay un error con el objeto COM real, ya que este problema ocurre cuando se utilizan VBScript, PowerShell e incluso C#. Hay un buen artículo que trata sobre la administración de Windows Update con PowerShell que se puede encontrar en here.

La solución consiste en configurar una tarea programada en la computadora y puede invocar esa tarea como mejor le parezca.

+0

Entendí que era por diseño como una "característica" de seguridad, ¡preguntándome si estaba siendo un poco crédulo ahora! – Matt

+0

característica/error ... es todo relativo :) –

+0

Gran característica, este/psexec (como se menciona a continuación) funciona bien ... – klyd

1

el código de actualización de Windows no se puede llamar desde una máquina remota. Hay algunas soluciones en la web, incluido el uso de psexec y un script (powershell o vbscript).

Yo usé WUInstall y BoeProx ha documentado algunas alternativas y ha iniciado un proyecto PoshPAIG. Moví trabajos antes de usar esto así que no sé si funciona.

0

La otra solución es cambiar la configuración del registro de Windows mediante PowerShell y, opcionalmente, reiniciar wuauserv para que los cambios surtan efecto.

Por ejemplo, en la configuración de Windows Server 2008R2 AutoUpdate se puede encontrar en:

HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update