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-ID: 300382

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

Printed on: October 9, 2024 at 17:10 o'clock

114757
Solution 114757 Mar 30, 2016 updated at 10:15:40 (UTC)
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
TiTux
TiTux Mar 30, 2016 at 10:29:09 (UTC)
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
114757
114757 Mar 30, 2016 updated at 10:33:37 (UTC)
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.
TiTux
TiTux Mar 31, 2016 at 07:51:59 (UTC)
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.
114757
114757 Mar 31, 2016 updated at 08:31:57 (UTC)
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...
TiTux
TiTux Apr 01, 2016 at 05:37:14 (UTC)
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