Jump to content

Powershell multiple AD OUs durchsuchen


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

Empfohlene Beiträge

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 :D

bearbeitet von Zhrizy
Link zu diesem Kommentar

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 von BOfH_666
Link zu diesem Kommentar
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?

Link zu diesem Kommentar
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

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