2016-04-08 17 views
0

Ich möchte SentOn als ein kurzes Datum und eine kurze Zeit erhalten. Wie kann ich das machen?Wie erhalte ich Datum und Uhrzeit getrennt von Outlook MailItem in Powershell?

$mailbox = "[email protected]" 

$outlook = New-Object -com Outlook.Application 
$ns = $outlook.GetNamespace("MAPI") 
$inbox = $ns.Folders.Item($mailbox).Folders.Item("Inbox") 
$searchItems = $inbox.Folders.Item("MySubFolder").Folders.Item("MyNestedSubFolder").Items 
$searchItems | Select Subject, SentOn.ToShortTimeString() 

Daraus ergibt sich ein Fehler SentOn : The term 'SentOn' is not recognized as the name of a cmdlet, function, script file, or operable program.

Ich habe auch versucht $searchItems | Select Subject, [datetime](SentOn).ToShortTimeString() bekam aber den gleichen Fehler.

Antwort

1

Bei näherer Betrachtung in der Schleife die Eigenschaft SentOn von System.DateTime Typ ist, so gibt es keinen Grund gibt, neu zu fassen. Jetzt möchten Sie eine Methode dieses Typs verwenden, um die Eigenschaftenausgabe zu ändern. Wie Sie gesehen haben, können Sie die Eigenschaften nicht dynamisch bearbeiten, wie Sie es getan haben.

Calculated properties würde hier gut passen, wie sie für diesen Zweck konzipiert sind.

select Subject, @{Name="SentOn";Expression={($_.SentOn).ToShortDateString()}} 

Wenn Sie mehr Eigenschaften als nur das SentOn ändern müssen, fügen Sie einfach weitere berechnete Eigenschaften hinzu, die durch Kommata getrennt sind. Genau wie du es mit normalen vorbestehenden Eigenschaften tun würdest.

1

Versuchen:

$searchItems | %{[pscustomobject]@{ 
        Subject=$_.Subject; 
        ShortTime=(get-date $_.SentOn.DateTime).ToShortTimeString(); 
        ShortDate=(get-date $_.SentOn.DateTime).ToShortDateString()} 
       } 
+0

Sie müssen keine neuen Objekte mit unnötigen Aufrufen erstellen, wenn das aktuelle Objekt bereits über die erforderlichen Eigenschaften verfügt. – Matt

Verwandte Themen