titux
Goto Top

PowerShell: Get-Mailbox soll auch OU Zugehörigkeit mit ausgeben

Hallo,

ich benötige eine Excel-Liste mit all unseren Postfächern. Ich habe bis jetzt diesen Aufruf verwendet:

Get-Mailbox -ResultSize Unlimited -OrganizationalUnit "OU=_Benutzer,DC=domäne,DC=local" |Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={$_.EmailAddresses |Where-Object {$_.PrefixString -ceq
"smtp"} | ForEach-Object {$_.SmtpAddress}}} | export-csv c:\test.csv

Wie bekomme ich es jetzt hin, dass er mir zu einem Benutzer mit seinem Postfach auch die OU mit ausgibt, in der sich der User befindet?
Wer kann mir hierbei helfen?

Viele Grüße
TiTux

Content-Key: 300382

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

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: 114757
Lösung 114757 30.03.2016 aktualisiert um 12:15:40 Uhr
Goto Top
Get-Mailbox -ResultSize Unlimited -OrganizationalUnit "OU=_Benutzer,DC=domäne,DC=local" | Select DisplayName,PrimarySmtpAddress, @{n="EmailAddresses";e={$_.EmailAddresses | Where-Object {$_.PrefixString -ceq "smtp"} | ForEach-Object {$_.SmtpAddress}}}, OrganizationalUnit | export-csv 'c:\test.csv' -Delimiter ";" -NoType -Encoding UTF8  
oder
Get-Mailbox -ResultSize Unlimited -OrganizationalUnit "OU=_Benutzer,DC=domäne,DC=local" | Select DisplayName,PrimarySmtpAddress, @{n="EmailAddresses";e={$_.EmailAddresses | Where-Object {$_.PrefixString -ceq "smtp"} | ForEach-Object {$_.SmtpAddress}}}, @{n="OU";e={$_.DistinguishedName.split(',',2)[1]}}| export-csv 'c:\test.csv' -Delimiter ";" -NoType -Encoding UTF8  

Gruß jodel32
Mitglied: TiTux
TiTux 30.03.2016 um 12:29:09 Uhr
Goto Top
Super, Vielen Dank jodel32!

Ich hätte jetzt vermutet, dass der Wert OrganizationalUnit hinter "Select" mit rein muss, was wohl falsch ist. Was genau macht am Ende "-NoType" ?

Viele Grüße
TiTux
Mitglied: 114757
114757 30.03.2016 aktualisiert um 12:33:37 Uhr
Goto Top
Zitat von @TiTux:
Was genau macht am Ende "-NoType" ?
Ohne den Parameter exportiert die Powershell zusätzliche Typeninformationen in dem Header der CSV, die ein vernünftiges auslesen von Programmen verhindern. Probiers einfach mal mit und ohne, dann siehst du schon den Unterschied. So wie ich es oben gemacht habe, lässt sich die CSV direkt korrekt mit richtiger Spaltenzuordnung in Excel öffnen.
Mitglied: TiTux
TiTux 31.03.2016 um 09:51:59 Uhr
Goto Top
Hi,

wenn wir gerade beim Thema PowerShell sind, ich benötige noch eine andere Abfrage, diesmal aus dem Active Directory, hier gibt es Probleme mit dem Export Vorgang.Liegt wohl daran, dass ich anstelle von export-csv den Befehl "Out-File" genutzt habe, wobei ich nicht weiß, was hierbei der Unterschied ist.

Get-ADComputer -Filter * -Properties * | FT Name, OperatingSystem, OperatingSystemVersion, LastLogonDate, enabled | Out-File C:\Temp\ADUserList.csv -Delimiter "`t" -NoType -Encoding UTF8  

Fehlermeldung:

Out-File : Es wurde kein Parameter gefunden, der dem Parameternamen
"Delimiter" entspricht.  
In Zeile:1 Zeichen:149
+ ... ADUserList.csv -Delimiter "`t" -NoType -Encoding UTF8  
+                    ~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Out-File], ParameterBindin
   gException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
   ands.OutFileCommand

Benutze ich export-csv:

PS C:\> Get-ADComputer -Filter * -Properties * | FT Name, OperatingSystem, OperatingSystemVersion, LastLogonDate, enabled | export-csv C:\Temp\ADUserL
ist.csv -Delimiter "`t" -NoType -Encoding UTF8  

wird der Befehl ohne Fehler ausgegeben, aber das Ergebnis sieht so aus:

"9e210fe47d09416682b841769c78b8a3 "
"27c87ef9bbda4f709f6b4002fa4af63c "
"27c87ef9bbda4f709f6b4002fa4af63c "
"27c87ef9bbda4f709f6b4002fa4af63c "
"27c87ef9bbda4f709f6b4002fa4af63c "

usw.
Mitglied: 114757
114757 31.03.2016 aktualisiert um 10:31:57 Uhr
Goto Top
Alles leider vollkommen falsch.

ft = Format-Table formatiert die Ausgabe als Format-String, dies kann man nicht an export-csv pipen weil es kein passendes Objekt mit Eigenschaften ist und nur vom Typ Format-String!

Zweitens kennt out-file keinen Parameter Namens -delimiter!

Denke immer daran die Powershell arbeitet mit Objekten. Wenn du also nur bestimmte Spalten exportieren willst, nimmst du das CMDLet select das belässt die Objekte wie sie sind. Das wird für den Export via Export-CSV benötigt.
Get-ADComputer -Filter * -Properties * | select Name, OperatingSystem, OperatingSystemVersion, LastLogonDate, enabled | export-csv 'C:\Temp\ADUserList.csv' -Delimiter "`t" -NoType -Encoding UTF8  
Bestimmte Eigenschaften bedürfen auch manchmal das man sie vorher expandiert bevor man sie in eine Textdatei exportieren kann. Dies macht man dann meist über CalculatedProperties.

Bitte beschäftige dich erst mal mit den PS Grundlagen bevor du dich an das AD wagst. Du steigst hier 10 Etagen höher ein...
Mitglied: TiTux
TiTux 01.04.2016 um 07:37:14 Uhr
Goto Top
Ja, da hast Du natürlich recht, ich muss mich echt mal richtig mit der Materie auseinandersetzen, man brauchts ja doch sehr oft.

Jedenfalls vielen Dank, dass Du mir bei meinem Problem so schnell helfen konntest.

Schönes Wochenende

Ciao
TiTux