移动Exchange邮件项并隐藏移动的输出?

时间:2018-03-13 08:32:29

标签: powershell exchangewebservices

我有以下powershell代码来检查收件箱中是否有任何邮件,并将它们移动到收件箱下的相关子文件夹(如果文件夹不存在则创建该文件夹)

function CreateFolder($MailboxName) 
{
"Mailbox Name : " + $MailboxName
"Folder Name : " + $newFolderName
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox,$MailboxName)
$ibInboxFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchangeservice,$folderid)
$fvFolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(1)
$SfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$newFolderName)
$findFolderResults = $exchangeService.FindFolders($ibInboxFolder.Id,$SfSearchFilter,$fvFolderView)
    if ($findFolderResults.TotalCount -eq 0) 
    {
        "Doesn't Exist"
        $NewFolder = new-object Microsoft.Exchange.WebServices.Data.Folder($exchangeService)
        $NewFolder.DisplayName = $newFolderName
        $NewFolder.Save([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
        "Folder Created"
        $mailItem.Move($findFolderResults.id)
    }
    else 
    {
        "Folder Already Exist"
        $mailItem.Move($findFolderResults.id)
    }

}

Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web 
Services\2.2\Microsoft.Exchange.WebServices.dll"

#$creds = Get-Credential

$global:exchangeService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_SP1) 
$exchangeService.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials -ArgumentList $creds.UserName, $creds.GetNetworkCredential().password 
$exchangeService.Url = "https://outlook.office365.com/EWS/Exchange.asmx"

$inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($exchangeService,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)

$view = new-object Microsoft.Exchange.WebServices.Data.ItemView(10)
$mailItems = $inbox.FindItems($view)

foreach($mailItem in $mailItems)
{       
    $newFolderName = $mailItem.From.Name #$mailItem.Sender.Name
    CreateFolder($creds.UserName)
}

但是当它运行时,我会为每个邮件项目获得以下输出:

Mailbox Name : bob.gently@bob.com
Folder Name : Gently, Bob
Folder Already Exist
ToRecipients                 : {}
BccRecipients                : {}
CcRecipients                 : {}
ConversationTopic            : 
ConversationIndex            : 
From                         : 
IsAssociated                 : 
IsDeliveryReceiptRequested   : 
IsRead                       : 
[ ... ]

如何隐藏$mailItem.Move输出?它与$findFolderResults.id是一个数组有关吗?

1 个答案:

答案 0 :(得分:0)

根据gpunktschmitz的评论只需要追加| out-null隐藏输出