nonicx
Goto Top

Ausführen nutzerspezifischer cmd-Skripte mit lokalen Gruppenrichtlinien

Hallo,

ich such nach einer Lösung zum Ausführen nutzerspezifischer *.cmd-Skripte bei An- und Abmelden von Nutzern mit lokalen Gruppenrichtlinien.

Folgendes Testszenario und Probleme egaben sich.

Ablageort der Skripte:

C:\WINDOWS\System32\GroupPolicy\User\Scripts\Logon

C:\WINDOWS\System32\GroupPolicy\User\Scripts\Logoff

Anmerkung, sofern das relevant sein sollte:

"C:\WINDOWS\System32\GroupPolicy" ist dabei nur als lokalter Adminstrator aber nicht als lokaler Standardnutzer sichtbar

Ort, wor der Pfad zu den Skripten in die lokalen Gruppenrichtlinien hinterlegt ist:

gpedit-->UserConfiguration-->Windows Settings-->Scripts (Logon/Logoff)

Problem(e): Alle an sich für bestimmte Nutzer hinterlegten Skripte werden für jeden Nutzer ausgefüht; die Fehlermeldungen habe ich notgedrungen mit einer Ergänzung im Skript unterdrückt, da das System sonst beim An- bzw. Abmelden hängen bleibt

Frage: Habe ich ggf. etwas übersehen bzw. was kann ich tun, damit ein bestimmtes Skript auch wirklich nur vom angedachten Nutzer beim An-/Abmelden gestartet wird? Eine Möglichkeit ein Skript nutzerrechtlich exklusiv nur einem Nutzer zugänglich zu machen habe ich nicht gefunden. Hingegen könnte man wohl allen Nutzern, die keinen Zugriff erhalten sollen die entspr. Rechte an jedem fremden Skript entziehen, was jedoch mit unterverhältnismäßigem Aufwand verbunden wäre.

Vielen Dank und Grüße!

Content-ID: 1635187383

Url: https://administrator.de/contentid/1635187383

Printed on: September 1, 2024 at 08:09 o'clock

ThePinky777
ThePinky777 Aug 08, 2024 updated at 08:40:39 (UTC)
Goto Top
du musst das dann halt Script technisch abfangen.

Auslesen Environment Variable im Script und dann dort z.b.
If not %USERNAME% = XYZ or IF not %USERNAME% =
Dann Exit oder umgekehrt

If Username = XYZ dann führe das eigentliche Script aus
Beliebige Usernames abchecken und dann immer das selbe Script ausführen.

hoffe du verstehst die logik die ich meine.

Beispiel:

if %USERNAME%==ABC echo TEST

if %USERNAME%==DFG echo TEST
Teste die 2 Zeilen dann weist du was ich meine
(setze deinen Usernamen ein auch zum test)

mit Befehl set kannst die Variable USERNAME auslesen


ersetze echo TEST durch
start subscript.bat

Result:
Wenn Username entsprechend einer der definierten Werte in dem Script startet er das subscript >> also dein jetziges.
nonicx
nonicx Aug 08, 2024 at 08:53:53 (UTC)
Goto Top
Du hast Recht. So geht es natürlich auch. Danke.
Ich hatte angenommen/darauf gebaut, dass Windows eine mir nicht bekannte Möglichkeit bieten würde, um Skripte für An- und Abmeldung spezifisch für einen Nutzer zu hinterlegen.
DerWoWusste
DerWoWusste Aug 08, 2024 at 08:59:25 (UTC)
Goto Top
Der Taskscheduler kann Skripte bei Anmeldung bestimmer Nutzer starten; dies stellst Du als Trigger "Bei der Anmeldung..." ein.
emeriks
emeriks Aug 08, 2024 at 09:07:12 (UTC)
Goto Top
Man könnte die Scripte auch nach dem Loginnamen benennen und dann den Aufruf darüber ausführen

C:\Pfad\Scripte\%username%.cmd
erikro
erikro Aug 08, 2024 at 09:11:56 (UTC)
Goto Top
Moin,

wenn ich Dich recht verstehe, willst Du verschiedene Skripte für verschiedene Gruppen bzw. einzelne User per Gruppenrichtlinie zuweisen. Ich würde das so machen:

Pro Skript eine Gruppenrichtlinie und dann über die Sicherheitsfilterung den jeweiligen Gruppen/Usern zuweisen.

ODER

Ein Skript für alle und dann im Skript mit if-Anweisungen für die jeweiligen Gruppen spezifische Anweisungen schreiben. Aber das geht nur mit Powershell und nicht mit cmd.

Ich würde das zweite bevorzugen, da es ja sicherlich Anweisungen im Skript gibt, die für alle gelten sollen. Dann muss ich das nur an einer Stelle pflegen.

hth

Erik
ThePinky777
ThePinky777 Aug 08, 2024 at 09:37:52 (UTC)
Goto Top
Zitat von @erikro:

Moin,

wenn ich Dich recht verstehe, willst Du verschiedene Skripte für verschiedene Gruppen bzw. einzelne User per Gruppenrichtlinie zuweisen. Ich würde das so machen:

Pro Skript eine Gruppenrichtlinie und dann über die Sicherheitsfilterung den jeweiligen Gruppen/Usern zuweisen.

ODER

Ein Skript für alle und dann im Skript mit if-Anweisungen für die jeweiligen Gruppen spezifische Anweisungen schreiben. Aber das geht nur mit Powershell und nicht mit cmd.

Ich würde das zweite bevorzugen, da es ja sicherlich Anweisungen im Skript gibt, die für alle gelten sollen. Dann muss ich das nur an einer Stelle pflegen.

hth

Erik

er will das per lokale GPO machen, also lokal am PC, kein AD.
ThePinky777
ThePinky777 Aug 08, 2024 updated at 09:42:03 (UTC)
Goto Top
es gäbe halt noch die ultra komplexe möglichkeit per script folgendes zu machen (aber nicht DOS, sondern VBS oder Powershell):

du könntest manuell am Computer ne Lokale Gruppe anlegen.
Dort die Lokalen User reintun die das Script bekommen sollen.

Und dann mit dem ensprechenden Script die Mitglieder der lokalen Gruppe auslesen, und
IF angemeldetes User = Mitglied dann >> dein Subscript ausführen.

das wäre das non+Ultra face-smile

weil dann kannst das Script immer gleich lassen und musst halt nur an jedem PC die gleichnamige Group erstellen und mit Usern betanken und fertig.
erikro
erikro Aug 08, 2024 at 09:43:14 (UTC)
Goto Top
Zitat von @ThePinky777:

er will das per lokale GPO machen, also lokal am PC, kein AD.

Oh, das "Lokal" habe ich glatt überlesen. face-wink Dann bleibt von meinem Vorschlag nur die zweite Variante übrig. Die lokalen User und Gruppenmitgliedschaften kann ich ja auch mit der PS auslesen.