Zhrizy 0 Geschrieben 22. November 2018 Melden Teilen Geschrieben 22. November 2018 (bearbeitet) Hallo zusammen, ich versuche jetzt seit längerem eine für mich sehr komplexe Aufgabe zu lösen: Es geht darum, dass in unsere AD externe Mitarbeiter angelegt werden, um bspw. Zugriff auf Sharepoint berechtigen zu können. Ich möchte nun all diese externen Mitarbeiter aus bestimmten OUs (OU=EMEA und OU=APAC) auslesen. Damit ist es aber nicht getan. Die externen Mitarbeiter haben einen internen Ansprechpartner im Manager-Feld hinterlegt. Von diesem hinterlegten Manager soll das extensionattribute11 ausgelesen und wiederum beim externen gepflegt werden. Um das ganze zu testen habe ich einen Script gebaut, welcher sich auf eine TestOU bezieht. Ich hänge nun aber wenn es darum geht eine Schleife für mehrere OUs zu schreiben. Damit ein bisschen deutlicher wird wovon ich rede, hänge ich nun den bereits funktionierenden Script an: $x = Get-ADUser -SearchBase "OU=Test User,OU=Users,OU=TUT,OU=EMEA,DC=Domain,DC=Domain" -filter * -Properties samaccountname, manager| select samaccountname, manager | where manager -NotLike "" foreach($y in $x){ $z=Get-ADUser -Identity $y.manager -Properties extensionattribute11 | Select extensionattribute11 Set-ADUser -Identity $y.samaccountname -Replace @{extensionattribute11=$z.extensionattribute11} } Jetzt soll - wie gesagt - dieser Script nicht auf der Test OU laufen sondern auf die OU EMEA und alle UnterOUs und auf die OU APAC und alle unter OUs. Bestenfalls noch mit einem Filter auf den samAccountName welcher bei externen immer auf ".ext" endet Bitte um Hilfe, bin langsam wirklich verzweifelt bearbeitet 22. November 2018 von Zhrizy Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. November 2018 Melden Teilen Geschrieben 22. November 2018 (bearbeitet) Wenn Du Code postest, formatierst Du den bitte auch als Code? Danke. Wenn Du mehrere OUs abklappern möchtest, packst Du die einfach in ein Array und beackerst dieses dann mit einer Schleife ... zu ungefähr: $OUListe = @( 'OUNummer01', 'OUNummer02', 'OUNummer03' ) Foreach($OU in $OUListe){ "Mach was mit der OU $OU" } Du brauchst also Deinen Code einfach mit der Anpassung -SearchBase $OU in die Foreach-Schleife einfügen. Wenn Du alle UnterOUs mit abgrasen möchtest, kannst Du bei Deinem Get-ADUser den Parameter -SearchScope Subtree oder -SearchScope 2 angeben .... ganz so, wie man es in der Hilfe nachsehen kann! bearbeitet 22. November 2018 von BOfH_666 2 Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 22. November 2018 Melden Teilen Geschrieben 22. November 2018 Hi, du müsstest auch mit "Get-ADUser -Filter {Name -like "*.ext"} | where { $_.DistinguishedName -like "*OU=Deine;OU=OrgaUnit1;DC=domain;DC=tld" -or $_.DistinguishedName -like "*OU=DeineAndere;OU=OrgaUnit2;DC=domain;DC=tld" }" zurecht kommen. Gruß Jan Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. November 2018 Melden Teilen Geschrieben 22. November 2018 vor 3 Stunden schrieb testperson: du müsstest auch mit "Get-ADUser -Filter.... Ja, ABER das hätte den Nachteil, dass das Erweitern des Scripts auf weitere OUs einigermaßen aufwändig wäre. Bei dem Ansatz mit dem Array, bräuchtest Du einfach nur das Array erweitern und der Rest bleibt gleich. ... oder hab ich wieder was falsch verstanden? 1 Zitieren Link zu diesem Kommentar
wolfrP 2 Geschrieben 26. November 2018 Melden Teilen Geschrieben 26. November 2018 Am 22.11.2018 um 11:33 schrieb BOfH_666: Wenn Du Code postest, formatierst Du den bitte auch als Code? Danke. Wenn Du mehrere OUs abklappern möchtest, packst Du die einfach in ein Array und beackerst dieses dann mit einer Schleife ... zu ungefähr: $OUListe = @( 'OUNummer01', 'OUNummer02', 'OUNummer03' ) Foreach($OU in $OUListe){ "Mach was mit der OU $OU" } Du brauchst also Deinen Code einfach mit der Anpassung -SearchBase $OU in die Foreach-Schleife einfügen. Wenn Du alle UnterOUs mit abgrasen möchtest, kannst Du bei Deinem Get-ADUser den Parameter -SearchScope Subtree oder -SearchScope 2 angeben .... ganz so, wie man es in der Hilfe nachsehen kann! Am 22.11.2018 um 16:18 schrieb BOfH_666: Ja, ABER das hätte den Nachteil, dass das Erweitern des Scripts auf weitere OUs einigermaßen aufwändig wäre. Bei dem Ansatz mit dem Array, bräuchtest Du einfach nur das Array erweitern und der Rest bleibt gleich. ... oder hab ich wieder was falsch verstanden? Der Array-Ansatz ist im Nachhinein auch viel besser lesbar und wartbar, was für Produktivsysteme nicht zu vernachlässigen ist 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.