how to get message subject list from public folder using ews powershell

Hi 

I need to get message subject list from public folder using ews Powershell then i already know to how to bind public folder but i want to know to how to use impersonation and get message subject from public folder Pls help me



        
 

Thanks

Manidurai



July 6th, 2015 2:14am

Hi 

I use following script ,Pls help me

## Get the Mailbox to Access from the 1st commandline argument
$MailboxName = "user@domain.local";
$PublicFoldersRoot = "\testnewpublic\testchild";
#$MailDate = [system.DateTime]::Now.AddDays(-365) 
## Load Managed API dll  
Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll"  
## Set Exchange Version  
$ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010 
## Create Exchange Service Object  
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion)  
## Set Credentials to use two options are availible Option1 to use explict credentials or Option 2 use the Default (logged On) credentials  
#Credentials Option 1 using UPN for the windows Account  
#$psCred = Get-Credential  
#$creds = New-Object System.Net.NetworkCredential($psCred.UserName.ToString(),$psCred.GetNetworkCredential().password.ToString())  
#$service.Credentials = $creds      
#Credentials Option 2  
$service.UseDefaultCredentials = $true  
## Choose to ignore any SSL Warning issues caused by Self Signed Certificates  
## Code From http://poshcode.org/624
## Create a compilation environment
$Provider=New-Object Microsoft.CSharp.CSharpCodeProvider
$Compiler=$Provider.CreateCompiler()
$Params=New-Object System.CodeDom.Compiler.CompilerParameters
$Params.GenerateExecutable=$False
$Params.GenerateInMemory=$True
$Params.IncludeDebugInformation=$False
$Params.ReferencedAssemblies.Add("System.DLL") | Out-Null
$TASource=@'
  namespace Local.ToolkitExtensions.Net.CertificatePolicy{
    public class TrustAll : System.Net.ICertificatePolicy {
      public TrustAll() { 
      }
      public bool CheckValidationResult(System.Net.ServicePoint sp,
        System.Security.Cryptography.X509Certificates.X509Certificate cert, 
        System.Net.WebRequest req, int problem) {
        return true;
      }
    }
  }
'@ 
$TAResults=$Provider.CompileAssemblyFromSource($Params,$TASource)
$TAAssembly=$TAResults.CompiledAssembly
## We now create an instance of the TrustAll and attach it to the ServicePointManager
$TrustAll=$TAAssembly.CreateInstance("Local.ToolkitExtensions.Net.CertificatePolicy.TrustAll")
[System.Net.ServicePointManager]::CertificatePolicy=$TrustAll
## end code from http://poshcode.org/624
## Set the URL of the CAS (Client Access Server) to use two options are availbe to use Autodiscover to find the CAS URL or Hardcode the CAS to use  
#CAS URL Option 1 Autodiscover  
#$service.AutodiscoverUrl($MailboxName,{$true})  
#"Using CAS Server : " + $Service.url   
#CAS URL Option 2 Hardcoded  
$uri=[system.URI] "https://localhost/ews/exchange.asmx"  
$service.Url = $uri    
## Optional section for Exchange Impersonation  
$service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, $MailboxName) 
        ## Find and Bind to Folder based on Path    
        #Define the path to search should be seperated with \    
        #Bind to the MSGFolder Root    
       $folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::PublicFoldersRoot)     
        $tfTargetFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)    
         $psPropset= new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)  
$psPropset.RequestedBodyType = [Microsoft.Exchange.WebServices.Data.BodyType]::Text
#Define ItemView to retrive just 1000 Items    
$ivItemView =  New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000)    
$fiItems = $null    
    $fiItems = $service.FindItems($tfTargetFolder.Id,$ivItemView)    
    [Void]$service.LoadPropertiesForItems($fiItems,$psPropset)  
    $(foreach($Item in $fiItems.Items){ 
$Attachment = ''
                       foreach($attach in $Item.Attachments){
               If($Attachment) {
             $Attachment=$Attachment + ";" + $attach.Name.ToString()
                               } 
             Else {
             $Attachment=$attach.Name.ToString()
                   }
                                   }
                        New-Object -TypeName PSObject -Property @{       
                        Date= $Item.DateTimeReceived 
                         MessageSubject =$Item.Subject
                        Messagebody =$Item.Body.Text 
                        Attachment = $Attachment 
                            }}) |select Messagesubject,Messagebody,date

Thanks

Manidurai 

                                                                                                
Free Windows Admin Tool Kit Click here and download it now
July 6th, 2015 2:24am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics