stephan66
Goto Top

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

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

Content-Key: 2826601562

Url: https://administrator.de/contentid/2826601562

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: SlainteMhath
SlainteMhath 18.05.2022 um 13:38:17 Uhr
Goto Top
Moin,

Get-ADUser -Filter * -prop * | where{$_.enabled -eq "True"}  |  select SamAccountName,name,@{n="othertelephone";e={$_.othertelephone -join ";"}} | export-csv C:\temp\ad-export.csv  

lg,
Slainte
Mitglied: MrCount
MrCount 18.05.2022 aktualisiert um 13:39:42 Uhr
Goto Top
Servus,

so sollte es gehen...

Get-ADUser -Filter * -prop * | where{$_.enabled -eq "True"} | select SamAccountName,name,@{n="othertelephone";e={$_.othertelephone -join ";"}} | export-csv C:\temp\ad-export.csv  

EDIT: da war SlainteMhath wohl schneller ^^
Mitglied: Stephan66
Stephan66 18.05.2022 um 14:04:47 Uhr
Goto Top
Hallo,
danke erstmal für die schnellen Antworten. Allerdings wird mir ziemlich wenig angezeigt, nur der Name und die Telefonnummer.
Ich dachte mit
Filter*
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
Mitglied: Doskias
Doskias 18.05.2022 aktualisiert um 15:00:28 Uhr
Goto Top
Moin,

Zitat von @Stephan66:
Ich dachte mit
Filter*
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

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
Mitglied: Stephan66
Stephan66 18.05.2022 um 14:53:48 Uhr
Goto Top
Dann bin ich wohl gedanklich falsch abgebogen.
Ich möchte ja einen Export aller Attribute und zusätzlich noch das Array "othertelephone"
Mitglied: Doskias
Doskias 18.05.2022 um 14:59:04 Uhr
Goto Top
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"

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.
Mitglied: Stephan66
Stephan66 18.05.2022 um 15:17:29 Uhr
Goto Top
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  
bekomme ich alle aktiven user, allerdings ohne alle Attribute und die zusätzliche Telefonnummer.
Ich möchte ja alle Attribute und zusätzlich das Feld ""othertelephone", da dies in der Standardabfrage nicht mit ausgegeben wird.
Mitglied: Doskias
Doskias 18.05.2022 aktualisiert um 15:35:15 Uhr
Goto Top
Zitat von @Stephan66:

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  
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 face-wink Nachtrag: Habe mal geschaut. Mein AD hat 160 Attribute bei den Benutzern.

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 ";"}}  
Ergibt SemAccountName, Name und Ohtertelephone

 select Enabled, SamAccountName,name,@{n="othertelephone";e={$_.othertelephone -join ";"}}  
ergibt zusätzlich ob der Benuter aktiviert oder deaktiviert ist.

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
Mitglied: SlainteMhath
SlainteMhath 18.05.2022 aktualisiert um 15:34:40 Uhr
Goto Top
Eben nochmal live getestet. Das PS funktioniert und gibt brav die Spalten
SamAccountName    name              othertelephone
--------------    ----              --------------
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
Mitglied: Stephan66
Stephan66 18.05.2022 um 15:45:36 Uhr
Goto Top
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
Mitglied: Doskias
Doskias 18.05.2022 um 15:54:34 Uhr
Goto Top
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

Dem ist auch in Prinzip so.
Get-ADUser -Filter * -prop *
würde dir dir alle User mit alle Attributen ausgeben. Aber wie gesagt: das sind zu viele und niemand braucht die alle auf einmal. Das select grenzt das Ganze dann umgehend wieder ein und zwar ausschließlich auf die, die du da auch angibst.
Mitglied: Stephan66
Stephan66 18.05.2022 um 16:18:19 Uhr
Goto Top
ja ok, Denkfehler von mir, ich dachte mit
Get-ADUser -Filter * -prop *
krieg ich alle und mit dem Rest noch zusätzlich das Telefonfeld
Mitglied: colinardo
colinardo 18.05.2022, aktualisiert am 20.05.2022 um 06:41:56 Uhr
Goto Top
Servus.
Zitat von @Stephan66:

ja ok, Denkfehler von mir, ich dachte mit
Get-ADUser -Filter * -prop *
krieg ich alle und mit dem Rest noch zusätzlich das Telefonfeld

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  
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.
# 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  
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
Mitglied: Stephan66
Stephan66 20.05.2022 um 15:31:49 Uhr
Goto Top
Hallo Uwe,

danke für deine Hilfe.
Ich werde es mal testen

Gruss Stephan