Powershell Skript darf nicht als Administrator geöffnet werden

einfachpeer

Lt. Commander
Registriert
Apr. 2022
Beiträge
1.360
Hallo zusammen,
laut Powershell habe ich als local Admin keine Rechte um mein PS1 Script über python zu starten.

set-executionpolicy : Der Zugriff auf den Registrierungsschlüssel
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" wurde verweigert. Starten Sie zum
Ändern der Ausführungsrichtlinie für den Standardbereich (LocalMachine) Windows PowerShell mit der Option "Als
Administrator ausführen". Führen Sie zum Ändern der Ausführungsrichtlinie für den aktuellen Benutzer
"Set-ExecutionPolicy -Scope CurrentUser" aus.
In C:\Users\firewall_server.ps1:1 Zeichen:1
  • set-executionpolicy Unrestricted
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma
nd
Ergänzung ()

Wie behebe ich das ?
 
Steht doch im Text.

Was hast du genau gemacht? Eine PowerShell mit Administrativen Rechten gestartet?
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" -> das geht es dann sicher nicht um den Scope CurrentUser.
 
steht ja da, oder ned?

"das höchste recht unter einem NT ist es, kein recht zu haben"
 
Im Übrigen:
Der Administrator ist nicht der Nutzer, der jedes Recht hat, sondern der Nutzer, der sich jedes Recht verschaffen kann.
 
  • Gefällt mir
Reaktionen: areiland, nutrix, Aduasen und 2 andere
Ich habe Windows neu installiert und vorher ging es. Was muss ich den tun, um das Recht zu bekommen ?
 
einfachpeer schrieb:
Was muss ich den tun, um das Recht zu bekommen ?

Powershell, rechtsklick, "Als Administrator starten"
zugangsdaten von deinen LocalAdmin eingeben
 
Das isses ja eben. Das habe ich gemacht. Sonst hätte ich diesen Beitrag doch gar nicht erst erstellt.
 
zeige mal die befehlszeile in Powershell, mit der du dein Script ausführen lassen willst

ansonsten probiere es so:

1. Navigiere in der Administrativen Powershell in den Ordner, wo das Scipt liegt
2. Nutzen von dem Befehl:

Code:
PowerShell.exe -ExecutionPolicy Bypass -Command "& '<Pfad>\<Scriptname>.ps1'"
 
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False


def run_as_admin():
if not is_admin():
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, ' '.join(sys.argv), None, 1)


subprocess.run(['powershell', '-Command', 'Start-Process', 'powershell', '-ArgumentList', '-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', 'firewall_server.ps1', '-Verb', 'RunAs'], check=True)
 
für mich sieht das so aus, als würde dein Pyton Powershell nicht als Admin aufrufen, auch wenn du das als Administrator ausfuhrst.

du kannst dir ja mal über dein Script ein Powershellfenster öffnen lassen, dann kannst du ja darin prüfen, ob das eine normale Powershell ist oder eine administrative
 
  • Gefällt mir
Reaktionen: areiland und einfachpeer
Das hat alles nichts damit zu tun. Die Richtlinien in der Powershell beschränken per Standard die Ausführung gewisser Scripte, und dabei spielt es keine Rolle, ob die Powershell per Administrator gestartet wurde oder nicht. Das ist normal und richtig so.

Wenn man gewisse "gefährliche" Scripte starten möchte, muß man hier an dieser Stelle die Richtlinie deaktivieren. Das kann man temporär machen, und man macht nach der Ausführung der Scripte die Richtlinie wieder scharf, oder man läßt sie permanent deaktiviert, was aber Tür und Tor für Gefährdungen per Malware und Co. führt.
Ergänzung ()

einfachpeer schrieb:
Ich habe Windows neu installiert und vorher ging es. Was muss ich den tun, um das Recht zu bekommen ?
Temporär die Richtlinie anpassen, Befehl wird ja oben gleich angezeigt, oder permanent deaktivieren, was ich nicht empfehlen würde. Der korrekte Weg wäre aber, daß Du Deine Scripte korrekt signierst. Doku siehe https://learn.microsoft.com/de-de/p...urity/set-executionpolicy?view=powershell-7.4
Unrestricted. Ab PowerShell 6.0 ist dies die Standardausführungsrichtlinie für Nicht-Windows-Computer und kann nicht geändert werden. Lädt alle Konfigurationsdateien und führt alle Skripts aus. Wenn Sie ein nicht signiertes Skript ausführen, das aus dem Internet heruntergeladen wurde, werden Sie vor der Ausführung zur Berechtigung aufgefordert.
 
  • Gefällt mir
Reaktionen: areiland
versuche mal folgendes:

unter gpedit.msc
-> Administrative Vorlagen -> Windows Komponenten -> Windows Powershell -> Scriptausführung aktivieren "Aktiviert"
 
  • Gefällt mir
Reaktionen: einfachpeer
tollertyp schrieb:
Im Übrigen:
Der Administrator ist nicht der Nutzer, der jedes Recht hat, sondern der Nutzer, der sich jedes Recht verschaffen kann.
Nicht ganz. Das wäre der System User, den man auch nutzen kann. Dafür gibt's Sysinternals und psexec, um Anwendungen (auch CMD oder Powershell) als System User zu starten.
 
Und warum sollte man einfach so Anwendungen als System User starten? Für Windows Server Anwendungen in kommerziellen Anwendungen ja, da braucht man das, aber für den privaten Fall bzw. Bereich habe ich das nirgends mal benötigt.
 
Zurück
Oben