For anyone with extra time:
How should I go about error handling/prevention for the User already being a member of the target groups?
function set-365admin {
[CmdletBinding()]
param
(
[Parameter(Mandatory=$false,
HelpMessage='Do you want to use Default Settings, if you do not specify its set to true?')]
[bool] $default = $true,
[Parameter(Mandatory=$false,
HelpMessage='Do you want to use Default Settings, if you do not specify its set to true?')]
[string] $user = (read-host "Type a user display name like 'Sue Somebody'"),
[Parameter(Mandatory=$True,
HelpMessage="This will open the Technet Article describing all available roles, set to false by default use '-web:`$`true' to trigger page")]
[bool] $web = $false,
[Parameter(Mandatory=$false,
HelpMessage="Adds read access on all O365 Users and adds Admin access to EAC")]
[string] $roleName="Exchange Service Administrator",
[Parameter(Mandatory=$false,
HelpMessage="Adds Support Link to Create Service Tickets Direct with MS or Dell as Applicable")]
[string] $roleName2="Service Support Administrator",
[Parameter()]
$oldverbose = $VerbosePreference,
[Parameter()]
$VerbosePreference = "continue",
[Parameter(Mandatory=$false,
HelpMessage="Use this to reviwe the available admin roles, pipe it out to gridview or just call it")]
$roles = (Get-MsolRole | ? {$_.Name -like '*administrator*'} | Select *)
)
process {
$oldverbose = $VerbosePreference
$VerbosePreference = "continue"
Write-Verbose "Verbose Set Proceeding"
start-sleep -Seconds 2
IF ($web)
{start https://docs.microsoft.com/en-us/azure/active-directory/active-directory-assign-admin-roles-azure-portal}
elseif ($default) {
write-verbose "Detected Default Config - $default Use CTRL + C to QUIT or Hit Enter to Proceed"
pause
Add-MsolRoleMember -RoleMemberEmailAddress (Get-MsolUser | Where DisplayName -eq $dispName).UserPrincipalName -RoleName $roleName
write-verbose "Added Exchange Admin proceeding with Service Support Admin"
Add-MsolRoleMember -RoleMemberEmailAddress (Get-MsolUser | Where DisplayName -eq $dispName).UserPrincipalName -RoleName $roleName2
Write-Verbose "$user is currently member of the following"
Get-MsolUserRole -UserPrincipalName ((Get-MsolUser | ? {$_.DisplayName -like $user}).UserPrincipalName)
Write-Verbose "Script is completed, resetting verbose and exiting"
$VerbosePreference = $oldverbose
Break
}
else {
$oldverbose = $VerbosePreference
$VerbosePreference = "continue"
write-verbose "This function is designed to address default adjustments only, please modify user membership manually"
start-sleep -Seconds 2
Write-verbose "Triggering the How to Page"
start https://docs.microsoft.com/en-us/powershell/module/msonline/add-msolrolemember?view=azureadps-1.0
Write-Verbose "Script is completed, resetting verbose and exiting"
$VerbosePreference = $oldverbose
Break
}
#End Process
}
#End Function
}