AD Export andere Telefonnummer
Hallo allerseits,
ich muss zugegeben Powershell ist nicht mein täglich Brot und ich bin da nicht so bewandert.
Ich möchte alle aktiven user aus dem AD exportieren
soweit so gut.
Jetzt brauche ich aber zwingend das Feld "andere Telefonnummer". Dies wird beim normalen Export nicht angezeigt, da es ein array ist und speziell abgefragt werden muss
Meine Frage ist nun, wie ich diese beiden scripts "verheirate", ich bin da leider ziemlich ratlos und für Hilfe dankbar.
Gruss
Stephan
ich muss zugegeben Powershell ist nicht mein täglich Brot und ich bin da nicht so bewandert.
Ich möchte alle aktiven user aus dem AD exportieren
Get-ADUser -Filter * | where{$_.enabled -eq "True"} | select SamAccountName | export-csv c:\temp\ad-export.csv
soweit so gut.
Jetzt brauche ich aber zwingend das Feld "andere Telefonnummer". Dies wird beim normalen Export nicht angezeigt, da es ein array ist und speziell abgefragt werden muss
Get-ADUser -Filter * -prop othertelephone | select name,@{n="othertelephone";e={$_.othertelephone -join ";"}} | export-csv C:\temp\ad-export.csv
Meine Frage ist nun, wie ich diese beiden scripts "verheirate", ich bin da leider ziemlich ratlos und für Hilfe dankbar.
Gruss
Stephan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2826601562
Url: https://administrator.de/forum/ad-export-andere-telefonnummer-2826601562.html
Ausgedruckt am: 22.03.2025 um 02:03 Uhr
14 Kommentare
Neuester Kommentar
Moin,
Achtung Falsch:
nicht ganz. Mit Filter * fragst du alles ab. Die Auswahl der Anzeige erfolgt mittels select-object (hier gekürzt auf select).
Gruß
Doskias
Zitat von @Stephan66:
Ich dachte mit
bekomme ich alle Attribute aus dem AD Objekt angezeigt, oder hab ich da jetzt einen Denkfehler. Ich möchte ja auch Anzeigename, Anmeldename, Adresse etc angezeigt bekommen
Ich dachte mit
Filter*
Achtung Falsch:
Gruß
Doskias
Zitat von @Stephan66:
Dann bin ich wohl gedanklich falsch abgebogen.
Ich möchte ja einen Export aller Attribute und zusätzlich noch das Array "othertelephone"
Dann bin ich wohl gedanklich falsch abgebogen.
Ich möchte ja einen Export aller Attribute und zusätzlich noch das Array "othertelephone"
Sorry war Blödsinn was ich geschrieben habe. Nicht Filter sondern Prop * zeigt dir alles an. Mit Filter könntest du nach Namen, etc suchen. Nach Einträgen die nicht leer sind, etc. Du willst ja aber von allen Usern die Daten haben, daher filter * und alle Attribute daher -prop *. Aber du willst nicht wirklich alles haben, daher wird hinterher mit select noch eingegrenzt.
Zitat von @Stephan66:
Hm, ok aber dann klappt es trotzdem nicht
mit
bekomme ich alle aktiven user, allerdings ohne alle Attribute und die zusätzliche Telefonnummer.
Ich möchte ja alle Attribute
glaube ich nicht. Niemand möchte alle Attribute Hm, ok aber dann klappt es trotzdem nicht
mit
Get-ADUser -Filter * -prop * | where{$_.enabled -eq "True"} | select SamAccountName,name,@{n="othertelephone";e={$_.othertelephone -join ";"}} | export-csv C:\temp\ad-export.csv
Ich möchte ja alle Attribute
und zusätzlich das Feld ""othertelephone", da dies in der Standardabfrage nicht mit ausgegeben wird.
Wenn du alle Standardabfragenwerte plus die "othertelephone" haben möchtest, dann musst du "nur" den select anpassen: select SamAccountName,name,@{n="othertelephone";e={$_.othertelephone -join ";"}}
select Enabled, SamAccountName,name,@{n="othertelephone";e={$_.othertelephone -join ";"}}
mit get-aduser -filter * -prop * kannst du dir alle Attribute anzeigen lassen. Such dir den Namen und bau dir das Ergebnis zusamme, mit den Feldern die du möchtest.
Gruß
Doskias
Eben nochmal live getestet. Das PS funktioniert und gibt brav die Spalten
aus und entpackt dabei auch korrekt das Feld "othertelephone". Wenn du mehr Felder in der Ausgaben haben willst, musst die die einzeln im select kommagetrennt angeben
/EDIT oder du gibst einen "*" an, dann kommen wirklich ALLE Felder
SamAccountName name othertelephone
-------------- ---- --------------
/EDIT oder du gibst einen "*" an, dann kommen wirklich ALLE Felder
Zitat von @Stephan66:
Das stimmt, da hast Du recht, aber den "*" setze ich doch schon bei Filter und prop, deshalb dachte ich da kommen dann alle Attribute und und zusätzlich das Feld "othertelephone".
Aber vlt muss ich wirklich die Felder selektieren, die ich brauche
Das stimmt, da hast Du recht, aber den "*" setze ich doch schon bei Filter und prop, deshalb dachte ich da kommen dann alle Attribute und und zusätzlich das Feld "othertelephone".
Aber vlt muss ich wirklich die Felder selektieren, die ich brauche
Dem ist auch in Prinzip so.
Get-ADUser -Filter * -prop *
Servus.
Im einfachsten Fall machst du das gewünschte dann so ohne jede Spalte nochmal listen zu müssen.
Jetzt kommt aber das fette "aber", "othertelephone" ist bei weitem nicht das einzigste MultiValued Attribut eines User-Objects, davon gibt es eine ganze Menge! Das hier erledigt das ermitteln und Umwandeln dieser Attribute von selbst.
Zur Info: Das Skript verwendet nur die LDAP Property-Namen nicht mit dem Mischmasch aus selbst generierten Property-Namen von Get-ADUser.
Grüße Uwe
Zitat von @Stephan66:
ja ok, Denkfehler von mir, ich dachte mit
krieg ich alle und mit dem Rest noch zusätzlich das Telefonfeld
ja ok, Denkfehler von mir, ich dachte mit
Get-ADUser -Filter * -prop *
Im einfachsten Fall machst du das gewünschte dann so ohne jede Spalte nochmal listen zu müssen.
Get-ADUser -Filter * -Properties * | ? Enabled | select *,@{n="othertelephone";e={$_.othertelephone -join ";"}} -exclude otherTelephone
# specify properties to exclude
$exclude = 'nTSecurityDescriptor','userCertificate','userParameters'
# get all user object properties
$allprops = ([System.DirectoryServices.ActiveDirectory.ActiveDirectorySchema]::GetCurrentSchema()).FindClass('user').GetAllProperties() | ? Name -notin $exclude | sort Name
# get multivalued properties
$multiValuedProps = $allprops | ?{!$_.IsSingleValued}
# join multivalued properties of all users with semicolon
$users = foreach($user in (Get-ADUser -Filter * -Properties * | select $allprops.Name)){
foreach($prop in $multiValuedProps.Name){
$user.$prop = $user.$prop -join ';'
}
$user
}
# export all users to csv
$users | Export-CSV .\users.csv -Delimiter ";" -NoType -Encoding UTF8 -verbose
Grüße Uwe