Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # https://www.reddit.com/r/PowerShell/comments/ti6ukx/weird_issue_with_no_solution/
- # must have impersonation access
- # https://cloudsolutions.atlassian.net/wiki/spaces/CKB/pages/4358166/Setting+up+Application+Impersonation+for+Exchange+or+Office+365#:~:text=Login%20to%20the%20Office%20365,Name%20and%20Description%20'CloudMigratorImpersonation'.&text=Click%20'Save'%20in%20the%20',role%20listed%20in%20Admin%20Roles.
- $user = '<adminemail>'
- $pass = '<adminpass>'
- $mailboxtoimpersonate = '<[email protected]>'
- Add-Type -Path 'C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll'
- $ExchangeVersion = [Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2013_SP1
- $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService($ExchangeVersion)
- $service.Credentials = New-Object System.Net.NetworkCredential($user, $pass)
- $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
- $TrustAll=$TAAssembly.CreateInstance("Local.ToolkitExtensions.Net.CertificatePolicy.TrustAll")
- [System.Net.ServicePointManager]::CertificatePolicy=$TrustAll
- $uri=[system.URI] 'https://outlook.office365.com/ews/exchange.asmx'
- $service.Url = $uri
- # Get last email from mailbox
- $service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, $mailboxtoimpersonate)
- $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
- $mails = $inbox.FindItems(10000)
- # really only need to load however many emails you want to check
- #$mails | select -f 5 | % {$_.Load()}
- $mails | % {$_.Load()}
- # testing
- #$from = $mails.Items[0].Sender.address
- #$date = $mails.Items[0].DateTimeReceived.ToString()
- #$message = '' | select @{n='from';e={$from}}, @{n='date';e={$date}}
- # body of most recent email
- $mails.items[0].body.text
Add Comment
Please, Sign In to add comment