blue joker 1 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 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 Zitieren Link zu diesem Kommentar
NorbertFe 2.062 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 Hallo, ich möchte mittels Powershell Skript eine Struktur meiner Firma erstellen. In meinen Augen der komplett falsche Ansatz. Magst du jetzt nicht hören, aber man definiert im Allgemeinen anhand der administrativen Anforderungen, und nicht anhand des Firmenorganigramms. Bye Norbert Zitieren Link zu diesem Kommentar
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden Teilen Geschrieben 10. Dezember 2015 man definiert im Allgemeinen anhand der administrativen Anforderungen, und nicht anhand des Firmenorganigramms. Meinst du damit die OU-Struktur? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 Moin, 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? Zitieren Link zu diesem Kommentar
OliverHu 19 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 ... man definiert im Allgemeinen anhand der administrativen Anforderungen, und nicht anhand des Firmenorganigramms. Wie oft ich das vor etlichen Jahren von einem MS Trainer gehört habe :D Aber bis heute hat sich daran nichts geändert ;) Meinst du damit die OU-Struktur? Ja die meint er ;) Zitieren Link zu diesem Kommentar
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden Teilen Geschrieben 10. Dezember 2015 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 Willst du die Struktur erstellen oder auslesen? Mit get-ou... bekommst du nur die Struktur. -properties bedeutet nur, dass zusätzliche Properties ausgelesen werden. Welche du ausgibst ist eine andere Geschichte -> Grundlagen Powershell. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 (bearbeitet) Ich hätte doch genauer lesen sollen und nachdenken. Ich bitte um Entschuldigung. bearbeitet 10. Dezember 2015 von lefg Zitieren Link zu diesem Kommentar
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden Teilen Geschrieben 10. Dezember 2015 Ich will die Struktur auslesen und ab besten in eine csv schreiben. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 Moin, du suchst Rekursion. Kapsele das Auslesen der OUs in eine Funktion. In der Funktion liest du dann die Unter-OUs aus, und für jede Unter-OU rufst du dann die Funktion selbst wieder auf. Gruß, Nils Zitieren Link zu diesem Kommentar
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden Teilen Geschrieben 10. Dezember 2015 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. ;) Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 10. Dezember 2015 Melden Teilen Geschrieben 10. Dezember 2015 (bearbeitet) 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 10. Dezember 2015 von NilsK Zitieren Link zu diesem Kommentar
blue joker 1 Geschrieben 11. Dezember 2015 Autor Melden Teilen Geschrieben 11. Dezember 2015 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 11. Dezember 2015 Melden Teilen Geschrieben 11. Dezember 2015 (bearbeitet) Pseudocode: function recurse($start){ foreach($item in (get-... $start)){ recurse $item } } bearbeitet 11. Dezember 2015 von Dukel Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 11. Dezember 2015 Melden Teilen Geschrieben 11. Dezember 2015 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.