Jump to content

Problem bei Batch Code (betreffend AD)


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

ich habe folgendes Problem. Ich soll mit einer Batch Datei aus dem AD die Owner einer Gruppe (sind in der Beschreibung aufgelistet), alle Gruppen die dem Owner gehören und sämtliche Mitglieder dieser Gruppen in Owner-abhängige .txt Dateien auslesen und speichern. Ich bin nun soweit, dass ich die Owner auslesen und in Dateien speichern kann, allerdings erstellt er pro gefundenen Owner eine neue .txt Datei.
Das Problem ist dabei, wenn ich nun 3 Gruppen mit dem gleichen Owner (z.B. Owner: Müller) habe, dann erstellt er mir auch 3 .txt Dateien... Ich möchte aber eine .txt für jeden Owner, in dieser .txt Datei sollten dann alle Gruppen mit Membern aufgelistet werden.

 

Mein Code sieht wie folgt aus:

 

ECHO OFF & setlocal enabledelayedexpansion

dsquery group "Pfad,Domain" -limit 400 | dsget group -desc > DescriptionList.txt


SET /a num=0

FOR /F "delims=" %%a IN (DescriptionList.txt) DO CALL :ausgabe "%%a"
ECHO.
ECHO Anzeige der erzeugten Variablen:
SET v
PAUSE
GOTO :eof

:ausgabe
SET /a num=%num%+1
ECHO Textzeile ist %1
ECHO Zeilennummer=%num%
SET var%num%=%1
ECHO Variableninhalt=!var%num%!

ECHO !var%num%! | findstr "Owner">NUL
IF not errorlevel 1 ECHO !var%num%! > Owner_var%num%.txt

 

Über Hilfe wäre ich sehr dankbar (Powershell, VBS, etc. kommen nicht in Frage, nur Batch (DOS, Win2k3 Server).

Gruß

Link zu diesem Kommentar

Moin,

 

ich denke auch, dass das Problem selbstgemacht ist. Du hängst die Zeilennummer an den Ownernamen, um den Dateinamen zu erzeugen. Lass die Nummer weg und nimm >> als Umleiter, dann solltest du es haben.

 

Warum setzt du auf eine 20 Jahre alte Technologie wie Batch? Muss das Script auf einem NT3.51 Server laufen?

 

Wieso 20 Jahre? Batch ist natürlich bedeutend älter. Es dürfte in DOS 1.0 enthalten gewesen sein, wenn es nicht sogar schon in CP/M existierte.

 

http://de.wikipedia.org/wiki/Microsoft_Batch

 

Schöne Grüße, Nils

Link zu diesem Kommentar

Hallo,

 

Hallo,

Vielleicht hilfts schon, wenn du in der letzten Zeile >  durch >> ersetzt und einen festen, anstelle eines variablen Dateinamens setzt.

 

Warum setzt du auf eine 20 Jahre alte Technologie wie Batch? Muss das Script auf einem NT3.51 Server laufen?

 

blub

 

Ich habs getestet, aber das liefert leidert nicht das, wie ich es mir vorgestellt habe. :/

Nein, lediglich deshalb, weil ich die Aufgabe bekommen habe mit Batch zu arbeiten.^^

 

 

Moin,

 

ich denke auch, dass das Problem selbstgemacht ist. Du hängst die Zeilennummer an den Ownernamen, um den Dateinamen zu erzeugen. Lass die Nummer weg und nimm >> als Umleiter, dann solltest du es haben.

 

Schöne Grüße, Nils

 

 

Ich poste mal, wie das End-Resultat gedacht sein soll:

 

Also meine DescriptionList.txt sieht bspweise wie folgt aus:

 

Owner: Max Mustermann
Owner: Peter Meier
Owner: Karsten Müller
Owner: Max Mustermann
Owner: Ulla Schulz
Owner: Ulla Schulz


usw...

und ich müsste eine .txt erstellen (zu einem dieser Owner, z.B. Max Mustermann), die wie folgt gegliedert sein sollte:

MaxMustermann.txt

 

Owner: Max Mustermann
Gruppe ABC:
- Ulla Schulz
- Karsten Müller
- Peter Meier

Gruppe DCE:
- Ulla Schulz
- Peter Meier 


Max Mustermann wäre in diesem Fall der Owner der Gruppen ABC und DCE, darunter sind die dazugehörigen Gruppenmitglieder aufgelistet.
 

Ich hoffe es wurde nun klarer, das hätte ich wohl mit im Ausgangspost vermerken soll zu Beginn.

 

Grüße

Link zu diesem Kommentar

Moin, habe die Lösung mit Hilfe eines anderen Forum erarbeitet:

 

@echo off & setlocal

for /f "delims=" %%a in ('dsquery group "Pfad,Domäne" -limit 999') do call :ProcessGroup %%a

pause
goto :eof

:ProcessGroup


for /f "tokens=1* delims=: " %%i in ('dsget group %1 -desc ^| findstr "Owner"') do set "Owner=%%j"

set "File=%Owner: =%.txt"

for /f "tokens=2 delims==," %%i in (%1) do set "Group=%%i"

setlocal enabledelayedexpansion

if not exist "%File%" >>"%File%" echo Owner: %Owner%
>>"%File%" echo Gruppe %Group%:
endlocal

for /f "tokens=2 delims==," %%i in ('dsget group %1 -members') do >>"%File%"  echo - %%i

>>"%File%" echo(

goto :eof

 

Trotzdem danke für eure Hilfe,

 

Grüße :)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...