Mit Batch AD-Gruppe auslesen
Hi zusammen,
ich habe eine Batch-Datei, wo an jedem Rechner beim Hochfahren ausgeführt wird.
Nun soll ich dort etwas für eine bestimmte Gruppe aus dem AD hinzufügen, dass nur bei ihnen etwas vom Netzwerk lokal kopiert wird.
Wie kann ich in einer Batch eine bestimme User-Group vom AD festlegen, damit nur bei dieser Gruppe etwas vom Netzwerk kopiert wird?
ich habe eine Batch-Datei, wo an jedem Rechner beim Hochfahren ausgeführt wird.
Nun soll ich dort etwas für eine bestimmte Gruppe aus dem AD hinzufügen, dass nur bei ihnen etwas vom Netzwerk lokal kopiert wird.
Wie kann ich in einer Batch eine bestimme User-Group vom AD festlegen, damit nur bei dieser Gruppe etwas vom Netzwerk kopiert wird?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 601911
Url: https://administrator.de/contentid/601911
Ausgedruckt am: 19.11.2024 um 07:11 Uhr
8 Kommentare
Neuester Kommentar
Für sowas gibt es GPP mit Zielgruppenadressierung: https://www.windowspro.de/wolfgang-sommergut/vergleich-gruppenrichtlinie ...
Wenn man unbedingt will, warum auch immer nicht mittels GPP
Wenn sowas via Skript würde ich persönlich aber gleich auf Powershell ausweichen.
@echo off
whoami /groups | find /i "DOMAIN\GruppeABC" >nul 2>&1 && (
echo "User in Gruppe"
)
if (([adsisearcher]"(SamAccountName=$env:UserName)").FindOne().Properties['memberof'] -match 'CN=MeineGruppe'){
# whatever to do
}
Zitat von @145916:
@echo off
whoami /groups | find /i "DOMAIN\GruppeABC" >nul 2>&1 && (
echo "User in Gruppe"
)
Hallo,
ich habe 2 Fragen dazu:
a) wegen 2>&1, warum leitest du den Error-Stream auf den normalen Stream?
b) Wenn die Bedingung zutrifft und jemand Mitglied der angegeben Gruppe ist, dann würde ich gerne eine definierte Variable setzen. Sprich statt dem echo würde ich gerne set inGroup=drinnen setzen
Warum funktioniert der set-Befehl an dieser Stelle nicht?
Es spielt keine Rolle ob ich die Variable inGroup bereits vorher definiert habe oder erst hier definiere.
Vielen Dank.
Moin.
Wenn man die Variable dagegen erst außerhalb der Klammern anspricht ist kein DelayedExpansion nötig.
Also entweder mit DelayedExpansion wenn die Befehle innerhalb der Klammern folgen
oder so
Bisschen was zu lesen, fürs Verständnis
https://ss64.com/nt/delayedexpansion.html
Zeppel
Zitat von @blacksun:
ich habe 2 Fragen dazu:
a) wegen 2>&1, warum leitest du den Error-Stream auf den normalen Stream?
Damit sämtliche Ausgaben unterdrückt werden und nicht nur die des Stdout, brauchen wir ja hier eh alles nicht.ich habe 2 Fragen dazu:
a) wegen 2>&1, warum leitest du den Error-Stream auf den normalen Stream?
b) Wenn die Bedingung zutrifft und jemand Mitglied der angegeben Gruppe ist, dann würde ich gerne eine definierte Variable setzen. Sprich statt dem echo würde ich gerne set inGroup=drinnen setzen
Warum funktioniert der set-Befehl an dieser Stelle nicht?
Doch er funktioniert nur wenn innerhalb der Klammer weitere Befehle folgen muss man DelayedExpansion einschalten und die Variable mittels Ausrufezeichen statt Prozentzeichen umklammern! Weil der Interpreter alles innerhalb der als eine Anweisung sieht und Variablen darin nur erneut expandiert wenn DelayedExpansion eingeschaltet istWarum funktioniert der set-Befehl an dieser Stelle nicht?
Wenn man die Variable dagegen erst außerhalb der Klammern anspricht ist kein DelayedExpansion nötig.
Also entweder mit DelayedExpansion wenn die Befehle innerhalb der Klammern folgen
@echo off &setlocal enabledelayedexpansion
whoami /groups | find /i "DOMAIN\GruppeABC" >nul 2>&1 && (
set inGroup=drinnen
echo !ingroup!
)
echo %ingroup%
@echo off
whoami /groups | find /i "DOMAIN\GruppeABC" >nul 2>&1 && (set inGroup=drinnen)
echo %inGroup%
Bisschen was zu lesen, fürs Verständnis
https://ss64.com/nt/delayedexpansion.html
Zeppel