Powershell-Skript als Benutzer-Anmeldeskript in einer Domäne nutzen?

Dass man mit der Powershell wesentlich komfortabler programmieren und Aufgaben erledigen kann, als mit der guten alten Kommandozeile bzw. Batch-Dateien, dürfte seit langem kein Geheimnis mehr sein. Daher ist es naheliegend, insbesondere wenn die entsprechenden Aufgaben sonst nicht gut umsetzbar sind, auch für ein Benutzer-Anmeldeskript innerhalb einer Windows-Domäne auf die Powershell zurückzugreifen. Dies geht allerdings nicht ohne einen kleinen Trick.

 

Macht das überhaupt Sinn?

Grundsätzlich braucht man das natürlich nur ändern, wenn man auch etwas neues umsetzen muss, wobei man auf die Powershell angewiesen ist und man diese Aufgabe in einer Batch-Datei nur erschwert umsetzen könnte. Einfach nur die bereits vorhandenen Batch-Dateien in Powershell umschreiben ist da eher sinnlos, außer man hat Langeweile.

In meinem letzten Beitrag ging es darum, einen Drucker per Powershell zum Standarddrucker zu machen, in Abhängigkeit vom leider variierenden Namen („umgeleitet XX“) beim Durchschleifen in eine RDP-Sitzung. Diese Aufgbae ist mit der Powershell defintiv leichter zu lösen, als mit einer Batch-Datei oder irgendwelchen VB-Skripten. In dieser müsste man vermutlich umständlicher den passenden Druckernamen ermitteln, was in einer Powershell-Abfrage recht einfach als „Einzeiler“ möglich ist. Deshalb habe ich mich für ein Powershell-Skript entschieden.

 

Problem

Leider kann man bei einem Benutzer im Active Directory nicht einfach das Powershell-Skript als Startskript hinterlegen. Es passiert dann bei dessen Anmeldung einfach nichts. Dies scheint auch nicht an irgendwelchen Rechten für die Skriptausführung zu liegen, sondern einfach von Haus aus nicht unterstützt zu werden. Das ist schade, aber kein Hindernis.

 

Lösung

Wie so oft geht es dann leider nur mit einem Trick. Man nutzt einfach weiterhin eine Batch-Datei als Anmeldeskript bzw. als „Platzhalter“, welche die für den Benutzer bestimmte Powershell-Datei aufruft.

Dies geht z. B. mit folgendem Befehl, ohne das irgendetwas bzgl. der Ausführungsrechte für die Powershell beachtet werden muss:

Denn durch den Parameter „noninteractive“ umgeht man die Ausführungsrichtlinie und das Skript wird ohne weitere Nachfragen still und leise im Hintergrund ausgeführt.

 

Etwas mehr Komfort

Wenn man für jeden Nutzer ein individuelles Powershell-Skript hat, könnte man z. B. mit nur einer einzigen Batch-Datei arbeiten, welche man dann bei jedem Benutzer als Anmeldeskript hinterlegt. Diese könnte dann, wenn das Powershell-Skript der Einfachheit halber so heißt wie auch der Nutzername lautet, einfach mit Hilfe der Umgebungsvariable %username% das Skript aufrufen:

Voi! Beim nächsten Anmelden eines beliebigen Benutzers wird dann das entsprechende Skript ausgeführt!

Schreibe einen Kommentar