Powershell WS在收件箱中打开子文件夹

Powershell WS在收件箱中打开子文件夹,powershell,exchangewebservices,Powershell,Exchangewebservices,如何打开收件箱中的文件夹 例如: 收件箱 文件夹 A(要素1-要素2) B(要素3-要素4) 我想读元素1到4 $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService $service.Credentials = New-Object System.Net.NetworkCredential -ArgumentList $mail, $password $service.URL =

如何打开收件箱中的文件夹

例如: 收件箱 文件夹 A(要素1-要素2) B(要素3-要素4)

我想读元素1到4

$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService 
$service.Credentials = New-Object System.Net.NetworkCredential -ArgumentList 
        $mail, $password 
$service.URL = New-Object Uri("outlook.office365.com/EWS/Exchange.asmx")        
    
    # Set how many emails we want to read at a time  
        $numOfEmailsToRead = 5  
          
        # Index to keep track of where we are up to. Set to 0 initially.   
        $index = 0  
        # Do/while loop for paging through the folder   
        do {   
            # Set what we want to retrieve from the folder. This will grab the first $pagesize emails  
            $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView($numOfEmailsToRead, $index)   
            # Retrieve the data from the folder   
            $findResults = $service.FindItems([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox, $view)   
            foreach ($item in $findResults.Items) {  
              # load the additional properties for the item  
              $item.Load($propertySet)  
          
              # Output the results  
              $msgProperty = New-Object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::MimeContent)  
              $email = [Microsoft.Exchange.WebServices.Data.EmailMessage]::Bind($service, $item.Id, $msgProperty)  
        ...
         } while ($findResults.MoreAvailable) 

感谢您的支持。

您需要首先使用FindFolder操作查找文件夹ID,例如

        ## Find and Bind to Folder based on Path  
    #Define the path to search should be seperated with \  
    $PathToSearch = "\Inbox\Blah"  
    #Bind to the MSGFolder Root  
    $folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,"user@domain.com")   
    $tfTargetFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)  
    #Split the Search path into an array  
    $fldArray = $PathToSearch.Split("\") 
    #Loop through the Split Array and do a Search for each level of folder 
    for ($lint = 1; $lint -lt $fldArray.Length; $lint++) { 
            $fldArray[$lint] 
            #Perform search based on the displayname of each folder level 
            $fvFolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(1) 
            $SfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$fldArray[$lint]) 
            $findFolderResults = $service.FindFolders($tfTargetFolder.Id,$SfSearchFilter,$fvFolderView) 
            if ($findFolderResults.TotalCount -gt 0){ 
                foreach($folder in $findFolderResults.Folders){ 
                    $tfTargetFolder = $folder                
                } 
            } 
            else{ 
                "Error Folder Not Found"  
                $tfTargetFolder = $null  
                break  
            }     
    }  
    $tfTargetFolder