none
Mit Batch-Datei OU auslesen RRS feed

  • Frage

  • Hallo zusammen,

    wir setzen für die Useranmeldungen Batch-Dateien ein. Ich muß nun mit Hilfe der Batch Datei herausfinden ob ein Computeroblekt in einer bestimmten OU liegt. Könnt Ihr mir da helfen? Leider kenne ich mich mit Batch-Dateien nicht so aus.

    Vielen Dank im Voraus.

    Viele Grüße

    Thomas

    Montag, 3. September 2012 09:12

Antworten

  • Deleted
    • Als Antwort markiert Wagner Thomas Freitag, 14. Dezember 2012 11:14
    Sonntag, 4. November 2012 17:46

Alle Antworten

  • Hi,
     
    Am 03.09.2012 11:12, schrieb Wagner Thomas:
    > wir setzen für die Useranmeldungen Batch-Dateien ein. Ich muß nun mit
    > Hilfe der Batch Datei herausfinden ob ein Computeroblekt in einer
    > bestimmten OU liegt. Könnt Ihr mir da helfen?
     
    Du hinterlegst dsquery.exe (beim Server dabei) oder admod.exe (von
    JoeWare) in deinem Netlogon. Das ergebnis schreibst du in eine Variable
    und wenn dann die Variable =X ist, gibst du ein Sprungziel an, in dem
    dann der Befehl steht, der für die OU ausgeführt werden soll.
     
    Danach reichen ein paar Zeilen, zB dsget:
    for /f %%a in (dsquery computer -name %computername%) do set CompOU=%%a
    if %computerOU"=ou=deineOU1,dc=dein,dc=ad" goto Ziel1
    if %computerOU"=ou=deineOU2,dc=dein,dc=ad" goto Ziel2
    if %computerOU"=ou=deineOU3,dc=dein,dc=ad" goto Ziel3
     
    ziel1:
    tuwas
     
    ziel2:
    tuwas anderes
     
    ziel1:
    tu noch was
     
    Ein paar Batch Beispiele:
     
    Oder du verlinkst deine gewünschten Befehle als eigene GPO und
    Startupscript direkt an der ComputerOU.
     
    Tschö
    Mark
    --
    Mark Heitbrink - MVP Windows Server - Group Policy
     
    Homepage:       www.gruppenrichtlinien.de - deutsch
    GPO Tool:       www.reg2xml.com - Registry Export File Converter
    NetworkTrayTool www.gruppenrichtlinien.de/tools/Networktraytool.htm
     
    Montag, 3. September 2012 09:48
  • Am 03.09.2012 11:48, schrieb Mark Heitbrink [MVP]:
    > for /f %%a in (dsquery computer -name %computername%) do set CompOU=%%a
     
    SOllte werden:
    for /f %%a in (%logonserver\netlogon\dsquery computer -name
    %computername%) do set CompOU=%%a
     
    Tschö
    Mark
     
    --
    Mark Heitbrink - MVP Windows Server - Group Policy
     
    Homepage:       www.gruppenrichtlinien.de - deutsch
    GPO Tool:       www.reg2xml.com - Registry Export File Converter
    NetworkTrayTool www.gruppenrichtlinien.de/tools/Networktraytool.htm
     
    Montag, 3. September 2012 10:03
  • oh Gott ... tippen ist ech nicht mein Ding.
     
    for /f %%a in (%logonserver%\netlogon\dsquery ...
     --
    Mark Heitbrink - MVP Windows Server - Group Policy
     
    Homepage:       www.gruppenrichtlinien.de - deutsch
    GPO Tool:       www.reg2xml.com - Registry Export File Converter
    NetworkTrayTool www.gruppenrichtlinien.de/tools/Networktraytool.htm
     
    Montag, 3. September 2012 10:43
  • Hallo Mark,

    erst mal vielen Dank für Deine Hilfe. Das ganze funktioniert auch wunderbar, ich nutze folgenden Befehl: for /f "tokens=3 delims=," %%a in ('dsquery user -name %username%') do set group=%%a.

    Mit dem Tokens kann ich je bestimmen in welcher Tiefe er das AD durchsucht. Das heißt wenn ich den Pfad "OU=OU1,DC=AD,DC=Firma,DC=DE" habe, dann sucht er ja in der OU namens "OU1" den User. Wenn aber weitere tiefere OU´s mache passt das ja nimmer. Ist es auch möglich dass ich von der anderen Seite suche und den Fokus auf die OU1 und tiefer mache? Das Ziel wäre das in der OU "OU1" so viele Unter-OU´s machen und sich die Abfrage auf alles was unter der OU "OU1" enthalten ist bezieht.

    Viele Grüße

    Thomas

    Montag, 3. September 2012 15:14
  • Hi,
     
    Am 03.09.2012 17:14, schrieb Wagner Thomas:
    > Das Ziel wäre das in der OU "OU1" so viele Unter-OU´s machen und
    > sich die Abfrage auf alles was unter der OU "OU1" enthalten ist
    > bezieht.
     
    Du musst ja nur deinen Delimiter ändern und aus dem "," ein
    ",DC=AD,DC=Firma,DC=DE" machen und dann einfach den Token "1" wählen ...
     
    Das Trennzeichen muss ja nicht dem offiziellen Trennzeichen folgen, du
    definierst es selbst und sagt "alles", was vor dem
    ",DC=AD,DC=Firma,DC=DE" steht ist das, was ich in die Variable schreiben
    möchte ...
     
    Tschö
    Mark
    --
    Mark Heitbrink - MVP Windows Server - Group Policy
     
    Homepage:       www.gruppenrichtlinien.de - deutsch
    GPO Tool:       www.reg2xml.com - Registry Export File Converter
    NetworkTrayTool www.gruppenrichtlinien.de/tools/Networktraytool.htm
     
     
    • Als Antwort markiert Wagner Thomas Montag, 3. September 2012 19:27
    • Tag als Antwort aufgehoben Wagner Thomas Donnerstag, 6. September 2012 10:10
    Montag, 3. September 2012 15:32
  • Hallo Mark,

    vielen Dank, das probiere ich mal.

    Viele Grüße

    Thomas

    Montag, 3. September 2012 19:29
  • Hallo Mark,

    ich habe noch etwas herumgebastelt aber bekomme es nicht hin, vielleicht kannst Du mir helfen?

    Ich habe folgendes Script:

    for /f "tokens=1 delims=,DC=DE,DC=Firma,DC=AD,OU=TEST,OU=TEST2" %%a in ('dsquery user -name %username%') do set group = %%a

    echo %group%

    Da erwarte ich das er mir die OU ausgibt in der der User "Admin" liegt. Leider bekomme ich folgende Ausgabe:

    C:\WINDOWS>for /F "tokens=1 delims=,DC=DE,DC=Firma,DC=AD,OU=TEST,OU=TEST2" %a in ('dsquery user -name Admin') do set group = %a

    C:\WINDOWS>set group = "

    C:\WINDOWS>echo
    ECHO ist eingeschaltet (ON).

    C:\WINDOWS>pause
    Drücken Sie eine beliebige Taste . . .

    Hast Du eine Ahnung was ich falsch mache? Wie gesagt, ich würde gerne abfragen ob der User in einer OU unterhalb DC=DE,DC=Firma,DC=AD,OU=Test.

    Vielen Dank im Voraus.

    Viele Grüße

    Thomas

    Donnerstag, 6. September 2012 10:35
  •  
    > for /f "tokens=1 delims=,DC=DE,DC=Firma,DC=AD,OU=TEST,OU=TEST2" %%a in
    > ('dsquery user -name %username%') do set group = %%a
     
    Das funktioniert so nicht... Du hast FOR mit deinem delims-String völlig
    durcheinandergebracht ;-))
             delims=xxx      - Gibt einen Satz von Trennzeichen an. Diese
    ersetzen
                              die Standardtrennzeichen TAB und Leerzeichen.
     Soll heißen: Jedes Zeichen hinter  delims= wird als "einzelnes"
    Trennzeichen interpretiert.
     
    Und für Deine Aufgabe fällt mir auch keine "einfache" Lösung per Batch
    ein. Batch kennt kein "Split", und das Zerlegen von Strings per FOR
    endet nicht in einer schleifenfähigen Auflistung, sondern in einer
    alphabetischen...
     
    mfg Martin
     
    PS: Das Attribut SAMID enthält den Wert, der in %username% steckt. Das
    Attribut NAME ist nur bei Euch zufällig gleich.
     

    NO THEY ARE NOT EVIL, if you know what you are doing: Good or bad GPOs?
    Wenn meine Antwort hilfreich war, freue ich mich über eine Bewertung! If my answer was helpful, I'm glad about a rating!
    Freitag, 14. September 2012 07:24