diff --git a/DumpDelegatesandForwardingRules.ps1 b/DumpDelegatesandForwardingRules.ps1 index e4dacc5..77ddfdd 100644 --- a/DumpDelegatesandForwardingRules.ps1 +++ b/DumpDelegatesandForwardingRules.ps1 @@ -1,17 +1,12 @@ -#Import the right module to talk with AAD -import-module MSOnline - -#Let's get us an admin cred! +#Let's get us an admin cred! $userCredential = Get-Credential -#This connects to Azure Active Directory -Connect-MsolService -Credential $userCredential - +#Connecting to Exchange Online $ExoSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection -Import-PSSession $ExoSession +Import-PSSession $ExoSession -DisableNameChecking | Out-Null $allUsers = @() -$AllUsers = Get-MsolUser -All -EnabledFilter EnabledOnly | select ObjectID, UserPrincipalName, FirstName, LastName, StrongAuthenticationRequirements, StsRefreshTokensValidFrom, StrongPasswordRequired, LastPasswordChangeTimestamp | Where-Object {($_.UserPrincipalName -notlike "*#EXT#*")} +$AllUsers = Get-Mailbox -ResultSize Unlimited $UserInboxRules = @() $UserDelegates = @() @@ -19,11 +14,11 @@ $UserDelegates = @() foreach ($User in $allUsers) { Write-Host "Checking inbox rules and delegates for user: " $User.UserPrincipalName; - $UserInboxRules += Get-InboxRule -Mailbox $User.UserPrincipalname | Select Name, Description, Enabled, Priority, ForwardTo, ForwardAsAttachmentTo, RedirectTo, DeleteMessage | Where-Object {($_.ForwardTo -ne $null) -or ($_.ForwardAsAttachmentTo -ne $null) -or ($_.RedirectsTo -ne $null)} - $UserDelegates += Get-MailboxPermission -Identity $User.UserPrincipalName | Where-Object {($_.IsInherited -ne "True") -and ($_.User -notlike "*SELF*")} + $UserInboxRules += Get-InboxRule -Mailbox $User.UserPrincipalname | Select-Object @{Name='Mailbox';Expression={$user.UserPrincipalName}},Name, Description, Enabled, Priority, ForwardTo, ForwardAsAttachmentTo, RedirectTo, DeleteMessage | Where-Object {($_.ForwardTo -ne $null) -or ($_.ForwardAsAttachmentTo -ne $null) -or ($_.RedirectsTo -ne $null)} + $UserDelegates += Get-MailboxPermission -Identity $User.UserPrincipalName | Where-Object {($_.IsInherited -ne "True") -and ($_.User -notlike "*SELF*")} } -$SMTPForwarding = Get-Mailbox -ResultSize Unlimited | select DisplayName,ForwardingAddress,ForwardingSMTPAddress,DeliverToMailboxandForward | where {$_.ForwardingSMTPAddress -ne $null} +$SMTPForwarding = $allUsers | Select-Object DisplayName,UserPrincipalName,ForwardingAddress,ForwardingSMTPAddress,DeliverToMailboxandForward | Where-Object {($_.ForwardingSMTPAddress -ne $null) -or ($_.ForwardingAddress -ne $null)} $UserInboxRules | Export-Csv MailForwardingRulesToExternalDomains.csv $UserDelegates | Export-Csv MailboxDelegatePermissions.csv diff --git a/DumpDelegatesandForwardingRulesFromFile.ps1 b/DumpDelegatesandForwardingRulesFromFile.ps1 index c06b032..5edf573 100644 --- a/DumpDelegatesandForwardingRulesFromFile.ps1 +++ b/DumpDelegatesandForwardingRulesFromFile.ps1 @@ -7,8 +7,9 @@ $userCredential = Get-Credential #This connects to Azure Active Directory Connect-MsolService -Credential $userCredential +#Connecting to Exchange Online $ExoSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection -Import-PSSession $ExoSession +Import-PSSession $ExoSession -DisableNameChecking | Out-Null #Let's Pull in the list of all GUIDS @@ -19,7 +20,7 @@ $allUsers = @() foreach ($guid in $UserGuids) { - $allUsers += Get-MsolUser -ObjectID $guid.ObjectId | select ObjectID, UserPrincipalName, FirstName, LastName, StrongAuthenticationRequirements, StsRefreshTokensValidFrom, StrongPasswordRequired, LastPasswordChangeTimestamp + $allUsers += Get-MsolUser -ObjectID $guid.ObjectId | select-Object ObjectID, UserPrincipalName, FirstName, LastName, StrongAuthenticationRequirements, StsRefreshTokensValidFrom, StrongPasswordRequired, LastPasswordChangeTimestamp } $UserInboxRules = @() @@ -28,7 +29,7 @@ $UserDelegates = @() foreach ($User in $allUsers) { Write-Host "Checking inbox rules and delegates for user: " $User.UserPrincipalName; - $UserInboxRules += Get-InboxRule -Mailbox $User.UserPrincipalname | Select Name, Description, Enabled, Priority, ForwardTo, ForwardAsAttachmentTo, RedirectTo, DeleteMessage | Where-Object {($_.ForwardTo -ne $null) -or ($_.ForwardAsAttachmentTo -ne $null) -or ($_.RedirectsTo -ne $null)} + $UserInboxRules += Get-InboxRule -Mailbox $User.UserPrincipalname | Select-Object @{Name='Mailbox';Expression={$user.UserPrincipalName}}, Name, Description, Enabled, Priority, ForwardTo, ForwardAsAttachmentTo, RedirectTo, DeleteMessage | Where-Object {($_.ForwardTo -ne $null) -or ($_.ForwardAsAttachmentTo -ne $null) -or ($_.RedirectsTo -ne $null)} $UserDelegates += Get-MailboxPermission -Identity $User.UserPrincipalName | Where-Object {($_.IsInherited -ne "True") -and ($_.User -notlike "*SELF*")} }