Ich habe ein Netzwerk mit Windows 2003-, 2008- und 2008r2-Servern. Ich habe ein Powershell-Skript, das ich geschrieben habe, um einen lokalen Computer mit den com-Objekten "Microsoft.Update" zu patchen. (Ähnlich wie bei Windows Update PowerShell Remoting .) Mein Skript funktioniert lokal hervorragend, aber ich möchte seine Funktionen remote verwenden, da ich eine angemessene Anzahl von Servern verwalten muss. In diesem Fall fällt es herunter (ähnlich wie bei dem anderen Beitrag, der nicht gelöst wurde).
Ich konnte den Fehler jedoch auf zwei Methoden für eine bestimmte Klasse eingrenzen.
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()
Wenn Sie diese in einer Powershell lokal als Administrator ausführen, treten keine Probleme auf. Wenn Sie versuchen, den Befehl invoke (oder enter-session oder winrs) zu verwenden, wird der folgende Fehler angezeigt. (Dies wird mit localhost getestet, aber jeder Host wird es tun. Ich habe es auch mit verschiedenen Authentifizierungsmethoden wie credssp und kerberos versucht.);
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
Ich habe dies in Blogs als Fehler erwähnt gesehen, aber ohne Backup für diese Behauptung. Es gibt zwei Problemumgehungen und beide machen mich nicht glücklich.
- Verwenden Sie psexec, um Befehle als Systembenutzer auszuführen. PSExec ist das, was ich versuche, nicht zu verwenden, da es sich als unzuverlässig erwiesen hat. Ich hätte auch gerne eine reine Powershell-Lösung.
- Erstellen Sie eine geplante Aufgabe und teilen Sie dieser mit, dass Ihr Skript als Systembenutzer ausgeführt werden soll. (über seinen Beitrag ) Dies ist nicht nur chaotisch, sondern ich werde auch nicht die Update-Ergebnisse haben. Ich muss mich bei einer Datei anmelden oder eine Datenbank oder etwas aktualisieren.
Ich bin offen für andere Möglichkeiten, Updates auf einem Host remote auszuführen, da dies ein Problem zu sein scheint, auf das viele Leute stoßen.
Ich habe einige Dokumente gefunden , die die Nachricht erklären, aber nicht den Grund oder die Problemumgehung.
Rückgabewert Gibt bei Erfolg S_OK zurück. Andernfalls wird ein COM- oder Windows-Fehlercode zurückgegeben.
This method can also return the following error codes. Return code Description E_INVALIDARGA parameter value is invalid. E_ACCESSDENIED This method cannot be called from a remote computer.
Woher weiß es, dass ich auf einem Remotecomputer bin?