41 lines
1.4 KiB
PowerShell
41 lines
1.4 KiB
PowerShell
# Find shared mailboxes on the basis of their email domain and lists of who has access to them
|
|
#
|
|
# Uses the new PowerShell "module" that support MFA.
|
|
#
|
|
|
|
# Where to save the CSV files to
|
|
$outputFile = 'C:\Temp\GroupDetails.csv'
|
|
|
|
# Wildcard for groups to find
|
|
$searchWildcard = '*@example.domain'
|
|
|
|
# Find and load the new ExO "module"
|
|
$exoModulePath = (Get-ChildItem -Path $env:userprofile -Filter CreateExoPSSession.ps1 -Recurse -Force -ErrorAction SilentlyContinue).DirectoryName[-1]
|
|
. "$exoModulePath\CreateExoPSSession.ps1"
|
|
|
|
# Establish a session to Exchange Online
|
|
Connect-EXOPSSession
|
|
|
|
# Get all the groups we're looking for
|
|
$allGroups = Get-DistributionGroup | Where-Object {$_.PrimarySmtpAddress -like $searchWildcard}
|
|
|
|
# Initialise the hash table to store results in
|
|
$groupDetails = @()
|
|
|
|
# Run through the groups getting the members and adding
|
|
foreach ($group in $allGroups) {
|
|
$groupMembers = (Get-DistributionGroupMember -Identity $group.Name).Alias -join '; '
|
|
$groupDetails += [PSCustomObject]@{
|
|
'GroupName' = $group.Name;
|
|
'GroupEmail' = $group.PrimarySmtpAddress;
|
|
'GroupType' = $group.GroupType;
|
|
'GroupMembers' = $groupMembers
|
|
}
|
|
}
|
|
|
|
# Export results to CSV file
|
|
$groupDetails | Export-Csv -Path $outputFile -NoTypeInformation
|
|
|
|
# End the Exchange Session
|
|
Get-PSSession | Where-Object {$_.ComputerName -eq 'outlook.office365.com'} | Remove-PSSession
|