Jump to content
Zhrizy

Powershell multiple AD OUs durchsuchen

Recommended Posts

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

Edited by Zhrizy

Share this post


Link to post
Share on other sites

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! ;-)

Edited by BOfH_666
  • Like 2

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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?

  • Like 1

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...