Jump to content

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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
  • Like 2

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×