PowerShell: Authorization Manager check failed

By Marc

Gestern war ich mal wieder mit einem Kunden zusammen am Einrichten seines neuen Active Directory. Ich habe ein paar PowerShell Skripte erstellt und bin über ein alt bekanntes Problem gestolpert, das sich unter neuem Namen “tarnt”: Unter der Fehlermeldung Authorization Manager check failed verbirgt sich die Sicherheitswarnung beim Datei öffnen über Netzwerkpfade. Das hier hatten wir ja schon 100 Mal:

Ich bekomme eine Warnung, wenn ich eine ausführbare Datei auf einem Netzwerkordner öffne, oder eine Batch Datei bearbeiten will: “Datei öffnen – Sicherheitswarnung / Es kann nicht überprüft werden, von wem diese Datei erstellt wurde. Möchten Sie die Datei wirklich ausführen?”

Hier der passende Screenshot dazu:

Sicherheitswarnung

Was das Ganze mit PowerShell zu tun hat, erkläre ich hier einmal …

Der Hintergrund

Ich habe im Laufe des Projekts mehrere PowerShell Skripte (Synchronisation von Usern aus Lotus Notes ins Active Directory und ein automatisches DHCP-Filter Skript), die wir nun zentral verteilen wollten. Der Ansatz war, die Skripte über das Sysvol der Domain Controller an alle Standorte zu verteilen, um Updates ohne großen Aufwand auf allen beteiligten Servern zu verteilen. So weit, so einfach.

Das Problem

Die Skripte liefen und die Tests verliefen erfolgreich. Also habe ich auf dem ersten Server den entsprechenden Task geplant und probeweise ausgeführt. Das Ergebnis: Nix. Keine Fehlermeldung, das Skript hat sein Protokoll nicht geschrieben, der Task wurde laut Anzeige erfolgreich ausgeführt. Seltsam.

Also habe ich versucht, den Aufruf über die Kommandozeile des angemeldeten Admins auszuführen:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Noninteractive -Command "&{\\demo.local\Sysvol\xxx\Skript.ps1}"

Funktionierte einwandfrei. Dann musste es wohl an dem Service-User liegen, über den das Skript gestartet wurde. Also habe ich eine Eingabeaufforderung unter dem Service-Account gestartet und den Befehl noch einmal ausgeführt. Und siehe da, eine Fehlermeldung: “Authorization Manager check failed […] FullyQualifiedErrorId: UnauthorizedAccess”

Powershell_AuthorizationManager

Hmm, die Meldung, wenn die Execution Policy nicht richtig gesetzt ist, sieht irgendwie anders aus. Was war denn der Unterschied zwischen dem angemeldeten Benutzer und dem Service Benutzer?

Berechtigungen? Ein kurzer Test zeigte, dass es daran nicht lag.

Ein Aufruf des Skripts über den lokalen Pfad (also: C:\Windows\Sysvol...) funktionierte einwandfrei. Und da fiel der Groschen.

Die Lösung

Die Zonenzuordnung des Netzwerkpfads “\demo.intra\Sysvol...” hatten wir noch nicht per Gruppenrichtlinie verteilt und beim angemeldeten Admin Benutzer von Hand gesetzt.

Also haben wir uns mal flott an die Zonenzuordnung für die lokale Domäne gesetzt (darüber schreibe ich auch gleich noch einen Beitrag, hier der Screenshot, wie man es manuell macht)

Internet_Optionen

und schon hat’s geklappt.

Powershell_funktioniert

Ich schreibe noch einen weiteren Post, in dem ich die Einstellungen, die ich hier manuell vorgenommen habe, per Gruppenrichtlinie verteile.

Loading