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!
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!
Please also mark the comments that contributed to the solution of the article
Content-ID: 1635187383
Url: https://administrator.de/contentid/1635187383
Printed on: September 12, 2024 at 00:09 o'clock
8 Comments
Latest comment
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:
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.
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
(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.
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
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
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
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.
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
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.
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
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.
Zitat von @ThePinky777:
er will das per lokale GPO machen, also lokal am PC, kein AD.
Oh, das "Lokal" habe ich glatt überlesen. Dann bleibt von meinem Vorschlag nur die zweite Variante übrig. Die lokalen User und Gruppenmitgliedschaften kann ich ja auch mit der PS auslesen.