thaefliger
Goto Top

Powershell: Auslesen LastLogonDate und SMTP Adresse

Hallo zusammen

ich möchte aus einem Hosted Exchange (Office 365) per Powershell eine Liste mit folgenden Spalten erstellen:

DisplayName - PrimarySMTPAddress - LastLogonDate

Das Problem:
Displayname und primarysmtpaddress kommen aus get-mailbox, lastlogontime kommt aus get-mailboxstatistics.

Es ist mir bisher nicht gelungen, die Ausgaben zusammen in eine Liste zu kriegen.
Meine Powershell-Kenntnisse sind aber auch auf Status "Anfänger".

Ich habe schon einige Beispiele ergoogelt und angepasst, leider bisher ohne Erfolg.
Zuletzt habe ich dieses hier probiert https://skydrive.live.com/?cid=0c23cb95e1200929&id=C23CB95E1200929%2 ...
und die benötigten Werte angepasst (da ich ja nur displayname, smtpaddress und lastlogontime will):

$UserList = Get-mailbox -Resultsize unlimited

$MasterList = @()

foreach ($User in $UserList) {

$MyObject = New-Object PSObject -Property @{
DisplayName = $null
Lastllogontime = $null
EmailAddress = $null
}

$MyObject.DisplayName = ($User).DisplayName
$MyObject.Lastllogontime =(Get-MailboxStatistics $User).Lastlogontime
$MyObject.EmailAddress = ($User).PrimarySmtpAddress


$MasterList += $MyObject
}

$MasterList | ft

Für jedes einzelne Postfach bekomme ich dann folgend lautende Fehlermeldung (Name abgeändert):

Cannot process argument transformation on parameter 'Identity'. Cannot convert value "Hans Meier" to type "Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter". Error: "Cannot convert hashtable to an object of th  
e following type: Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter. Hashtable-to-Object conversion is not supported in restricted language mode or a Data section."  
    + CategoryInfo          : InvalidData: (:) [Get-MailboxStatistics], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-MailboxStatistics


Kann mir hier jemand weiterhelfen?

Danke schon mal

Grüsse
Thomas

Content-Key: 222102

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

Printed on: April 26, 2024 at 05:04 o'clock

Member: colinardo
colinardo Nov 15, 2013 updated at 15:42:24 (UTC)
Goto Top
Hallo Thomas,
kein Problem
$mailboxes = Get-Mailbox -Resultsize unlimited 
$mailboxes | select DisplayName,PrimarySmtpAddress,@{Name="LastLogonTime";expression={(Get-MailboxStatistics -Identity $_.DisplayName).LastLogonTime}}  
Grüße Uwe
Member: thaefliger
thaefliger Nov 15, 2013 updated at 16:07:06 (UTC)
Goto Top
Hallo Uwe

vielen Dank, das ist ja fast Zauberei :D

Kannst du mir die Verschachtelungen / Funktionsweise dieses Teils noch erklären?
@{Name="LastLogonTime";expression={(Get-MailboxStatistics -Identity $_.DisplayName).LastLogonTime}}  

Grüsse
Thomas
Member: colinardo
colinardo Nov 15, 2013 updated at 15:53:35 (UTC)
Goto Top
Zitat von @thaefliger:
Kannst du mir die Verschachtelungen / Funktionsweise dieses Teils noch erklären?
das sind berechnete Eigenschaften die du im select-Befehl nutzen kannst
siehe dazu : http://technet.microsoft.com/en-us/library/ff730948.aspx

das
Name="LastLogonTime"
setzt den Namen der neuen Spalte, hier könntest du z.B. auch "LogInZeit" schreiben.
das
expression={(Get-MailboxStatistics -Identity $_.DisplayName).LastLogonTime}
führt den Befehl(expression) für jeden Datensatz aus, alles was du darin ausgibst landet in der neuen Spalte.

das "$_" ist das aktuelle Objekt in der Pipeline also ein Mailbox-Objekt auf dessen Eigenschaften du mit dieser Variablen zugreifen kannst.

Schönes Wochenende
Uwe
Member: thaefliger
thaefliger Nov 15, 2013 at 15:58:55 (UTC)
Goto Top
Super, danke!

Dir auch schönes Wochenende

Thomas