Führen Sie Remote-Powershell als Administrator aus


14

Bevor ich mich mit der Frage befasse, habe ich einige andere Fragen gefunden, die mir ähnlich erscheinen, aber die mein Problem nicht lösen konnten. Hier sind Links zu ihnen:

Remote-Ausführung eines Skripts, das "Als Administrator ausführen" aufruft

/programming/10724591/how-to-remote-execute-an-elevated-remote-script-in-powershell

Nun zu der Frage: Ich muss ein Windows Update-Skript über Powershell auf einem Remotecomputer ausführen. Wenn ich über mstsc eine Remote-Verbindung zum Computer herstelle, Powershell als Administrator ausführe und das Windows Update-Skript ausführe, funktioniert es einwandfrei. Wenn ich über mstsc eine Remote-Verbindung zum Computer herstelle, Powershell ausführe, OHNE die Ausführung als Administrator zu wählen, und das Skript ausführe, erhalte ich eine Reihe von Fehlern in dieser Richtung: "Ausnahme beim Aufrufen von" Download "mit" 0 "-Argumenten:" Ausnahme von HRESULT: 0x80240044 ""

Dies geschieht nur, wenn ich es OHNE Administratorrechte ausführe.

Das Skript, das ich ausführe, lautet: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html

Wenn ich mich nun mit Enter-PSSession vom Computer entferne und versuche, das Skript auszuführen, werden Fehler angezeigt, die sich jedoch geringfügig unterscheiden. Sie lauten wie folgt: "Ausnahme beim Aufrufen von" CreateUpdateDownloader "mit" 0 "-Argumenten:" Zugriff verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))

Ich bin offen für Vorschläge, was dieses Problem verursachen könnte, aber ich denke, ich habe es herausgefunden. Ich glaube, dass die Powershell-Sitzung mit erhöhten Rechten ausgeführt werden muss. Ich weiß, wie dies beim Remotezugriff über mstsc zu tun ist, konnte jedoch keine Möglichkeit finden, dies über Enter-PSSession zu tun. Ich habe gegoogelt und gegoogelt, aber nichts gefunden. Wenn jemand dabei helfen könnte, Licht ins Dunkel zu bringen, wäre das sehr dankbar.


Ich bin nicht an einer Konsole zum Testen, aber wenn Sie eine Remote-ETSN-Sitzung (Enter-PSSession) erhalten, können Sie "Start-Process PowerShell –Verb RunAs" eingeben und die Eingabetaste drücken. Gibt Ihnen das die Administrator-Eingabeaufforderung? Wenn ja, werde ich dies in eine Antwort ändern, die Sie akzeptieren können. Wenn nicht, werde ich testen, wenn ich wieder an meinem Schreibtisch bin.
TheCleaner

Mögliche Antwort hier serverfault.com/a/474031/23300
Nic

Antworten:


3

Wenn Sie Befehle remote ausführen, werden sie mit Administratorrechten ausgeführt, da nur Administratoren Befehle in Powershell remote ausführen dürfen. Der Fehler "Ausnahme beim Aufrufen von" CreateUpdateDownloader "mit" 0 "Argumenten:" Zugriff verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED)) "" ist kein systemeigener Powershell-Fehler. Dies bedeutet, dass diese Zeile fehlschlägt: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader (), diese Zeile versucht, das aktualisierte Downloader-Objekt mithilfe von $ UpdateSession zu erstellen = New-Object -ComObject Microsoft.Update.Session-Objekt.

Ohne zu wissen, wohin der Downloader sich wenden möchte, kann ich nur von einem Mutterschiff ausgehen. Es kann darauf hinweisen, dass Anmeldeinformationen, die Sie haben, während Sie remote mit einem Server verbunden sind, Gegenstand eines Proxys sein können. Dies ist eine gängige Sicherheitsmethode. Benutzer, die über eine Remoteverbindung mit Computern verbunden sind, können keine Elemente direkt aus dem Internet herunterladen (unabhängig davon, wie vertrauenswürdig die Quelle ist).

Hoffe das hilft, Chris



2

Zum Ausführen von Remote-PowerShell-Befehlen MÜSSEN Sie als Administrator auf dem Computer ausgeführt werden, von dem aus Sie die Befehle starten, zumindest in der Standardkonfiguration. Dies ist eine dokumentierte Einschränkung von PowerShell-Remoting. Es ist jedoch möglich, die Standardeinstellungen zu lockern, wenn Sie dies möchten. Dies erfordert jedoch Änderungen an der PowerShell-Konfiguration.

Übergeben Sie für die Remoteausführung Anmeldeinformationen mit dem Parameter -credentials? z.B

Enter-PSSession -Credential(Get-Credential) -ComputerName <remotehost>

Versuchen Sie unter Windows 2012 Server und ohne AD-Einrichtung, "MicrosoftAccount \ Administrator" als Anmeldeinformationen zu verwenden, und verwenden Sie das Kennwort des Remoteadministrators. Die Verwendung des vollqualifizierten Benutzernamens ohne AD schien mir immer ein unnötiger Aufwand zu sein.
Füro

1

In Bezug auf Windows-Updates auf Remoteservern konnte ich es zum Laufen bringen, indem ich einen JEA-Endpunkt auf dem Remoteserver einrichtete, der als lokales virtuelles Konto ausgeführt wird.

Von https://docs.microsoft.com/en-us/powershell/jea/session-configurations :

Lokales virtuelles Konto

Wenn die von diesem JEA-Endpunkt unterstützten Rollen alle zur Verwaltung des lokalen Computers verwendet werden und ein lokales Administratorkonto ausreicht, um die Befehle erfolgreich auszuführen, sollten Sie JEA für die Verwendung eines lokalen virtuellen Kontos konfigurieren. Virtuelle Konten sind temporäre Konten, die für einen bestimmten Benutzer eindeutig sind und nur für die Dauer der PowerShell-Sitzung gültig sind. Auf einem Mitgliedsserver oder einer Arbeitsstation gehören virtuelle Konten zur Administratorgruppe des lokalen Computers und haben Zugriff auf die meisten Systemressourcen. Auf einem Active Directory-Domänencontroller gehören virtuelle Konten zur Gruppe der Domänenadministratoren der Domäne.


Das hat mir geholfen! Danke, dass du mich daran erinnert hast, dass JEA großartig ist!
B_Dubb42
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.