blue joker 1 Geschrieben 10. Dezember 2015 Melden 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
NorbertFe 2.277 Geschrieben 10. Dezember 2015 Melden 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
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden Geschrieben 10. Dezember 2015 man definiert im Allgemeinen anhand der administrativen Anforderungen, und nicht anhand des Firmenorganigramms. Meinst du damit die OU-Struktur?
lefg 276 Geschrieben 10. Dezember 2015 Melden 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?
OliverHu 19 Geschrieben 10. Dezember 2015 Melden 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 ;)
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden 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
Dukel 468 Geschrieben 10. Dezember 2015 Melden 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.
lefg 276 Geschrieben 10. Dezember 2015 Melden Geschrieben 10. Dezember 2015 (bearbeitet) Ich hätte doch genauer lesen sollen und nachdenken. Ich bitte um Entschuldigung. bearbeitet 10. Dezember 2015 von lefg
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden Geschrieben 10. Dezember 2015 Ich will die Struktur auslesen und ab besten in eine csv schreiben.
NilsK 3.046 Geschrieben 10. Dezember 2015 Melden 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
blue joker 1 Geschrieben 10. Dezember 2015 Autor Melden 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. ;)
NilsK 3.046 Geschrieben 10. Dezember 2015 Melden 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
blue joker 1 Geschrieben 11. Dezember 2015 Autor Melden 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
Dukel 468 Geschrieben 11. Dezember 2015 Melden Geschrieben 11. Dezember 2015 (bearbeitet) Pseudocode: function recurse($start){ foreach($item in (get-... $start)){ recurse $item } } bearbeitet 11. Dezember 2015 von Dukel
NilsK 3.046 Geschrieben 11. Dezember 2015 Melden 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden