Output in das richtige Format bringen...
Hi,
ich habe folgendes vor. Ich möchte alle Benutzer aus dem AD lesen und diese mit Benutzername, Vorname und Name in ein bestimmtes Format bringen.
Das Format soll sein benutzername = Vorname, Nachname
Im Moment bekomme ich nur eine Liste mir den drei Werten und muss jetzt diese in das oben genannte Format konvertieren.
Hat da jemand eine Idee ?
Ausgabe komm wie folgt...
Hoffe jemand kennt sich aus, ich bin in Sachen Powershell der absolute Newbie
ich habe folgendes vor. Ich möchte alle Benutzer aus dem AD lesen und diese mit Benutzername, Vorname und Name in ein bestimmtes Format bringen.
Das Format soll sein benutzername = Vorname, Nachname
Im Moment bekomme ich nur eine Liste mir den drei Werten und muss jetzt diese in das oben genannte Format konvertieren.
Hat da jemand eine Idee ?
$users = Get-AdUser -SearchBase "OU=Benutzer,DC=CONTOSO,DC=DE" -Filter * | Select-Object SamAccountName,GivenName, Surname
Ausgabe komm wie folgt...
SamAccountName GivenName Surname
-------------- -------- -------
Testuser1 TestVorname TestNachname
Hoffe jemand kennt sich aus, ich bin in Sachen Powershell der absolute Newbie
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217169
Url: https://administrator.de/forum/output-in-das-richtige-format-bringen-217169.html
Ausgedruckt am: 21.12.2024 um 05:12 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @mguenth83:
Bei deiner Variante waren noch diverse Leerzeichen drin die raus mussten daher habe ich noch was hinzugefügt.
die kannst du direkt vor Ort entfernen:Bei deiner Variante waren noch diverse Leerzeichen drin die raus mussten daher habe ich noch was hinzugefügt.
$Name=Get-AdUser -SearchBase "OU=Benutzer,DC=CONTOSO,DC=DE" -Filter * | %{echo "$($_.SamAccountName)=$($_.GivenName),$($_.Surname)"}
$Location | %{$_.Replace(" ",$null)}
Weisst Du zufällig noch wie ich den $_.physicalDeliveryOfficeName in Anführungszeichen setzen kann?
Ändere diesen Teil so ab (beachte das umgekehrte Hochkomma vor den Anführungszeichen)%{echo "$($_.SamAccountName) = `"$($_.physicalDeliveryOfficeName)`""}
Achso und kannst du mir das mal mit dem echo erklären, weiss nämlich nicht so ganz wie das funktioniert
Also das mit echo
bzw. write-host
läuft so: Zuerst ist da das %{
} indem das ganze eingeschlossen ist, dies ist ein Alias für das CMDLet foreach-Object
es bewirkt also das alles was in den Geschweiften Klammer ist, für alle Objekte in der Pipe ausgeführt wird. Den Inhalt der echo-Zeile schließe ich mit Anführungszeichen ein um alles in einer Zeile ohne Zeilenumbrüche zu halten. In doppelten Anführungszeichen werden Variablen auch noch expandiert, da wir aber eine Property von dieser Variablen abfragen müssen wird dies zusätzlich noch in ein $()
packen (Expression). Das $_
ist das aktuelle Objekt das in der Pipe übergeben wird.Wenn du anstatt normalen Anführungszeichen bei echo "einfache" benutzt, wird alles dazwischen als String interpretiert und keinerlei Variable expandiert.
Beispiel:
echo 'Das ist eine nicht expandierte Variable: $test'
Das ist eine nicht expandierte Variable: $test