Jump to content

OU Struktur erstellen


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 möchte mittels Powershell Skript eine Struktur meiner Firma erstellen.

Das wäre meine OU Struktur (beispielhaft):

  • Einkauf
    • LeiterEinkauf
    • MitarbeiterEinkauf
  • Lager
    • Verwalter
    • Arbeiter
  • Verkauf
    • Unterabteilung1
      • Bereich1-1
      • Bereich1-2
    • Unterabteilung2
      • Bereich2-1
      • Bereich2-2
    • Unterabteilung3

 

Mein Ziel wäre eine csv-Datei mit folgendem Aufbau:

Abteilung;Unterabteilung;Bereich
Einkauf
Einkauf;LeiterEinkauf
Einkauf;MitarbeiterEinkauf
Lager
Lager;Verwalter
Lager;Arbeiter
Verkauf
Verkauf;Unterabteilung1
Verkauf;Unterabteilung1;Bereich1-1
Verkauf;Unterabteilung1;Bereich1-2
Verkauf;Unterabteilung2
Verkauf;Unterabteilung2;Bereich2-1
Verkauf;Unterabteilung2;Bereich2-2
Verkauf;Unterabteilung3

Ich hoffe, das ist bis hierhin mal so verständlich.

 

Das habe ich bis jetzt probiert:

$AbtArray = @("Einkauf","Lager","Verkauf")

foreach ($Abteilung in $AbtArray)
    {
     $Unterabteilung = Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase "OU=$Abteilung,DC=meine,DC=Firma,DC=at" -SearchScope OneLevel -Properties Name
     Write-Host $Abteilung";"$Unterabteilung
    }

Allerdings bekomme ich als Ausgabe:

Einkauf;OU=LeiterEinkauf,OU=Einkauf,DC=meine,DC=Firma,DC=at OU=MitarbeiterEinkauf,OU=Einkauf,DC=meine,DC=Firma,DC=at
Lager;OU=Verwalter,OU=Lager,DC=meine,DC=Firma,DC=at OU=Arbeiter,OU=Lager,DC=meine,DC=Firma,DC=at 
Verkauf;OU=Unterabteilung1,OU=Verkauf,DC=meine,DC=Firma,DC=at OU=Unterabteilung2,OU=Verkauf,DC=meine,DC=Firma,DC=at OU=Unterabteilung3,OU=Verkauf,DC=meine,DC=Firma,DC=at

Warum wird der DistinguishedName ausgegeben, obwohl ich bei "-Properties Name" geschrieben habe?

Wie komme ich danach in die nächste Ebene (Bereich1-1,...)?

 

lg, Ingemar

 

Link zu diesem Kommentar

 

auch ich frage mal kritisch, welchem Zweck soll diese Struktur dienen? Was soll damit gemacht werden? Welche Gedankengänge habe zu diesem Wunsch geführt?

Diese Struktur soll später in eine Access-Datenbank eingearbeitet werden. Und da sich an der Sturktur was ändern kann, will ich sie aus dem AD erstellen.

 

Noch eine Bemerkung:

Ich kann die Struktur im AD nicht beeinflussen :nene: . Sie ist, wie sie ist (das kommt von oben und war auch schon vor mir da! :rolleyes: )

 

lg, Ingemar

Link zu diesem Kommentar

Kapsele das Auslesen der OUs in eine Funktion. In der Funktion liest du dann die Unter-OUs aus

soweit hab ich es verstanden und hoffentlich auch umgesetzt:

Function OUAuslesen ($Abteilung) 
    {
        Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase "OU=$Abteilung,DC=meine,DC=Firma,DC=at" -SearchScope OneLevel | ft Name -HideTableHeaders
    }

$AbteilungenArray = @("Einkauf","Lager","Verkauf")

foreach ($Abt in $AbteilungenArray)
    {
        $Ref = OUAuslesen ($Abt)
        $ReferatArray = @()
        $ReferatArray += $Ref
                    
        Write $Abt $ReferatArray >> "C:\OUStruktur.txt"

    }

Und das bekomme ich dabei raus:

 

Einkauf

LeiterEinkauf

MitarbeiterEinkauf

 

Lager

Verwalter

Arbeiter

 

Verkauf

Unterabteilung1

Unterabteilung2

Unterabteilung3

So weit, so gut. Nur wie ich jetzt zu den Bereichen kommen soll, versteh ich grad nicht. :confused: :confused:

 

Vielleicht kann mir da einer den Weg weisen. ;)

Link zu diesem Kommentar

Moin,

 

deine Rekursion ist nicht richtig.

 

Die Funktion muss per Parameter eine Start-OU als DN bekommen. Sie liest dann alle Unter-OUs aus. In einer Schleife ruft sie für jede Unter-OU sich selbst auf und übergibt den DN der jeweilogen Unter-OU als Parameter.

 

Das Hauptskript ruft nur einmal die Start-OU auf. Den Rest macht die Funktion per Rekursion.

 

Gruß, Nils

bearbeitet von NilsK
Link zu diesem Kommentar

Hallo Nils,

 

erstmal danke für deine Unterstützung.

 

Aber ich komme alleine einfach nicht weiter. :cry:

 

In einer Schleife ruft sie für jede Unter-OU sich selbst auf und übergibt den DN der jeweilogen Unter-OU als Parameter

Ich versteh nicht, :confused:

- wie ich in die Funktion die Schleife einbauen soll,

- woher die Schleife weiß, wie oft sie durchlaufen werden soll, und

- wie ich ihr den richtigen Parameter übergebe.

 

Kannst du mir da mit dem Code helfen?

 

lg, Ingemar

Link zu diesem Kommentar

Moin,

 

gestern Abend ist mir eingefallen, dass du das auch viel einfacher machen kannst. Lass das AD die Arbeit machen, es kennt ja alle OUs. Geht sogar ganz ohne PowerShell:

  • Exportieren aller OUs per csvde.exe in eine Textdatei:
    csvde -f OUs.txt -r "(objectClass=organizationalUnit)" -l canonicalName
  • Erste Spalte entfernen, Suchen & Ersetzen, um das passende Format zu erhalten (z.B. in Notepad oder in Excel)
  • ggf. danach noch Ordnen in der richtigen Reihenfolge (mit SORT, per Excel oder wie auch immer)

Gruß, Nils

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...