Powershell - Werte in Variable durch Schleife erweitern bzw. ändern
Hallo zusammen
Ich habe mir ein Skript gebaut mit dem ich unser AD Abfrage und mir anhand eines Benutzernamens die Vorgesetztenstruktur ausgeben lasse (bis zur 9. Ebene).
Das ganze funktioniert aktuell aber mit einer Zwischenausgabe in eine Textdatei, welche ich mir gerne sparen würde.
Beispiel:
Ich gebe den Benutzernamen ein, das Skript guckt wer an diese Person berichtet und schreibt diese Benutzernamen in eine Datei.
Im nächsten Schritt lese ich die Datei ein und ermittle wer an diese Personen berichtet, usw.
Ich finde das ganze etwas lästig und würde das gerne umstellen, so dass jede Ebene nur in eine Variable geschrieben wird.
Mit dem Code ermittle ich die IDs
In der Datei stehen dann alle IDs untereinander und können somit in der nächsten "foreach" Schleife weiterverarbeitet werden.
Das habe ich umgestellt auf:
(Zeile 6 hat sich geändert!)
Leider bekomme ich die Daten nicht wie erhofft sondern aneinandergekettet, und zwar ohne Punkt und Komma!
(ID1ID2ID3ID4ID5)
Die Funktion dazu sieht folgendermaßen aus:
Kann mir jemand einen Tipp geben wie ich den Code umstellen muss damit es wie gewünscht funktioniert?
Gruß
\Ralf
Ich habe mir ein Skript gebaut mit dem ich unser AD Abfrage und mir anhand eines Benutzernamens die Vorgesetztenstruktur ausgeben lasse (bis zur 9. Ebene).
Das ganze funktioniert aktuell aber mit einer Zwischenausgabe in eine Textdatei, welche ich mir gerne sparen würde.
Beispiel:
Ich gebe den Benutzernamen ein, das Skript guckt wer an diese Person berichtet und schreibt diese Benutzernamen in eine Datei.
Im nächsten Schritt lese ich die Datei ein und ermittle wer an diese Personen berichtet, usw.
Ich finde das ganze etwas lästig und würde das gerne umstellen, so dass jede Ebene nur in eine Variable geschrieben wird.
Mit dem Code ermittle ich die IDs
### Level 0
$searcher=New-Object DirectoryServices.DirectorySearcher
$searcher.Filter="(&(samaccountname=$SEARCHCDSID))"
$results=$searcher.findall()
$ID0 = $results.Properties.directreports
foreach ($ID00 in $ID0){DOMSEARCH $ID00 >> ".\$LEVEL0"}
In der Datei stehen dann alle IDs untereinander und können somit in der nächsten "foreach" Schleife weiterverarbeitet werden.
Das habe ich umgestellt auf:
(Zeile 6 hat sich geändert!)
### Level 0
$searcher=New-Object DirectoryServices.DirectorySearcher
$searcher.Filter="(&(samaccountname=$SEARCHCDSID))"
$results=$searcher.findall()
$ID0 = $results.Properties.directreports
foreach ($ID00 in $ID0){$L0 += DOMSEARCH $ID00`n }
Leider bekomme ich die Daten nicht wie erhofft sondern aneinandergekettet, und zwar ohne Punkt und Komma!
(ID1ID2ID3ID4ID5)
Die Funktion dazu sieht folgendermaßen aus:
function DOMSEARCH ($ARG) {
$searcher=New-Object DirectoryServices.DirectorySearcher
$searcher.Filter="(&(distinguishedname=$ARG))"
$results=$searcher.findall()
$ID0 = $results.Properties.samaccountname
#$REPTO = $results.Properties.fordmanagercdsid
#$DIV = $results.Properties.forddivabbr
#$MAIL = $results.Properties.mail
#$OTHERMAIL = $results.Properties.fordotheremail
#$COMPANY = $results.Properties.company
#echo "$ID0,$REPTO,$DIV,$MAIL,$OTHERMAIL,$COMPANY"
$ID0
}
Kann mir jemand einen Tipp geben wie ich den Code umstellen muss damit es wie gewünscht funktioniert?
Gruß
\Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 324631
Url: https://administrator.de/contentid/324631
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
damit das hinzufügen von Werten zu einem Array funktioniert musst du natürlich erst mal ein leeres Artay erzeugen sonst denkt die Powershell es soll Strings verketten, also erstelle erst mal das leere Array
dann kannst du in deiner Schleife den Wert hinzufügen, einen Zeilenumbruch brauchst du dann nicht hinzufügen
Gruß
damit das hinzufügen von Werten zu einem Array funktioniert musst du natürlich erst mal ein leeres Artay erzeugen sonst denkt die Powershell es soll Strings verketten, also erstelle erst mal das leere Array
$L0 = @()
$L0 += DOMSEARCH "$ID00"