Gibt es eine Möglichkeit, Regedit auf mehreren Win10-Remotecomputern ohne UAC auszuführen?

Gibt es eine Möglichkeit, Regedit auf mehreren Win10-Remotecomputern ohne UAC auszuführen?

Gibt es eine Möglichkeit, Regedit auf einer Reihe von Remotecomputern auszuführen, ohne dass unter Windows 10 die Benutzerkontensteuerung angezeigt wird? Die /sBefehlszeile funktioniert auf meinem Windows 10-Testcomputer nicht (ich bin sicher, dass dies auf meinen Win7-Systemen funktionieren WIRD, aber die meisten meiner Clientcomputer sind Win10).

Das Ziel ist letztlich,

  1. Importieren Sie eine Reg-Datei in HKLM, um die Ausführungsrichtlinie von PowerShell auf uneingeschränkt zu erhöhen.
  2. Verwenden Sie Powershell, um den Systemschutz/die Systemwiederherstellung zu aktivieren.
  3. Verwenden Sie PowerShell, um einen Wiederherstellungspunkt zu erstellen und schließlich
  4. Importieren Sie eine Reg-Datei, um die Ausführungsrichtlinie wieder auf „Restricted“ oder „RemoteSigned“ zurückzusetzen. (Dies wird übrigens alles als Aufgabe vor dem Patchen durchgeführt.)

Auf meinem Testcomputer funktioniert das alles gut, mit der Ausnahme, dass regedit ... selbst mit dem /sParameter ... unter Windows 10 nicht ohne ein UAC-Popup ausgeführt wird. Ich habe dies auf meinem Win10-Testcomputer gesehen.

Ich habe versucht, PowerShell mit erhöhten Rechten über eine Bat-Datei auszuführen:

powershell.exe -ExecutionPolicy Bypass -File .\MyScript.ps1

Und

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy unrestricted -Force' -Verb RunAs}"

aber beide schlagen fehl (d. h. der Zugriff wird verweigert, die Powershell-Ausführungsrichtlinie wird nicht erhöht).

Das Importieren der Registrierungsdatei und anschließende Ausführen meines Powershell-Skripts ist für mich der beste Weg zum Erfolg.

Ich habe dies auch über Sysinternals psexec versucht, basierend auf anderen gesuchten Lösungen [z. B. Aufruf von reg.exe durch psexec zum Importieren], aber das hat seine eigenen Probleme (psexec benötigt ein importiertes Reg für die EULA, also dasselbe Problem, keine Lösung).

Vor diesem Hintergrund habe ich auch versucht, den folgenden Befehl auszuführen:

C:\Windows\System32\REG.exe ADD HKLM\\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f

...Aber es kommt immer wieder die Meldung „FEHLER: Ungültiger Schlüsselname“. Ich habe wahrscheinlich schon zu lange daran gearbeitet (jetzt 3 Tage) und brauche einfach noch ein zweites Paar Augen. Kann mir jemand helfen?

Antwort1

Da Sie mehrere verschiedene Versuche unternommen haben, gibt es tatsächlich mehrere Probleme, auf die Sie in Ihrem Beitrag hingewiesen haben und die möglicherweise einer Antwort bedürfen. Sie haben nicht deutlich gemacht, wie Sie einen dieser Befehle remote ausführen. Keiner der von Ihnen gezeigten Befehle bewirkt tatsächlich etwas auf einem Remotecomputer. Sie werden alle auf dem lokalen Computer ausgeführt. Sie haben jedoch erwähnt, dass Sie PSExec ausprobieren möchten.

Mir ist auch keine Situation bekannt, in der UAC die Remote-Befehlsausführung stört. Ich kann also nur davon ausgehen, dass Sie die Befehle auf Ihrem lokalen Computer ausführen und UAC-Eingabeaufforderungen erhalten. Aber Sie tun dies als Vorbereitung für die tatsächliche Remote-Ausführung der Befehle.

Ich werde also versuchen, Ihnen einige grundlegende Unterstützung bei der Remote-Ausführung zu geben, die Sie auf den richtigen Weg bringt. Für die Remote-Ausführung von Befehlen ist das Öffnen bestimmter Firewall-Ports erforderlich. Behalten Sie das also im Hinterkopf, wenn Sie fortfahren.

Powershell verfügt bereits über einen Mechanismus zur Remote-Befehls-/Skriptausführung.

  • Sie können den Schalter für bestimmte Befehle verwenden -ComputerName, um sie auf einem Remote-System auszuführen.
  • Sie können eine interaktive Remotesitzung mit Enter-PSSession <ComputerName>und starten Exit-PSSession.
  • Mit dem Befehl können Sie Invoke-Command -ComputerName <ComputerName>jedes Skript oder jeden Befehl remote ausführen.

Keine dieser Methoden unterliegt der Ausführungsrichtlinienbeschränkung, es sei denn, Sie starten eine interaktive Powershell-Sitzung und versuchen dann, ein Skript auszuführen.

Diese Befehle werden auf dem Remotecomputer unter Verwendung Ihres aktuell angemeldeten Benutzerkontos ausgeführt. Wenn Sie kein Administrator auf dem Remotecomputer sind, müssen Sie zusätzlich ein PSCredentialObjekt angeben, das Administrator ist und den -CredentialSchalter verwendet.

https://docs.microsoft.com/en-us/powershell/scripting/core-powershell/running-remote-commands?view=powershell-6

Alternativ können Sie PSExec auch verwenden, um Remote-Befehle oder ausführbare Dateien auszuführen. Es ist vorzuziehen, diese im SYSTEM-Kontext auszuführen, um JEGLICHE Berechtigungsprobleme zu vermeiden, aber sie sind normalerweise erfolgreich, wenn Sie sie einfach im Kontext eines Administrators auf dem Remote-Computer ausführen.

  • Umgehen Sie die EULA-Eingabeaufforderung mit dem -accepteulaSchalter
  • Ausführen im SYSTEM-Kontext mit dem -sSchalter
  • Manchmal -iist die Verwendung des (interaktiven) Schalters erforderlich, um bestimmte ausführbare Dateien von Drittanbietern ordnungsgemäß auszuführen.

Über PSExec ausgeführte Befehle unterliegen nicht den UAC-Einschränkungen. Wenn Sie jedoch versuchen, Powershell remote über PSExec auszuführen, das wiederum versucht, ein Skript auszuführen, steht Ihnen die Ausführungsrichtlinie im Weg, sofern Sie nicht auch den -ExecutionPolicy BypassSchalter verwenden. Wenn Sie jedoch PSExec verwenden, um Powershell remote auszuführen, das wiederum ein Skript ausführt, ist dies ein sehr langer Weg, um das zu erreichen, was Sie tun müssen.

Auch hier stellt PSExec eine Verbindung zum Remotecomputer her und verwendet dabei Ihren aktuell angemeldeten Benutzerkontext. Wenn Sie kein Administrator auf dem Remotecomputer sind, müssen Sie einen Benutzernamen/ein Passwort angeben, das die Schalter -uund -pverwendet.

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

Eine letzte Sache: Sie müssen sich immer merken, wo der Befehl ausgeführt wird (lokal oder remote) und sich darüber im Klaren sein, dass auf alle Ressourcen, auf die Sie zugreifen möchten, aus der Perspektive des Ortes zugegriffen wird, an dem der Befehl ausgeführt wird. Wenn ich den Befehl beispielsweise C:\MyBatch.batauf einem Remotecomputer ausführe, C:\MyBatch.batmuss er auf dem Remotecomputer vorhanden sein.

verwandte Informationen