functions/private/Add-O365UserToGroup.ps1
function Add-O365UserToGroup { param( [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)] [ValidateNotNullOrEmpty()] [string]$Username, [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)] [string]$groupname, [ValidateSet('office','security')] [string] $Type = 'security' ) Try { if($Type -eq 'security'){ $group = Get-MsolGroup -searchstring $groupname $members = Get-MsolGroupMember -GroupObjectId $group.objectid $exists = 0 foreach ($member in $members) { if ($member.displayname -eq $username){ write-log -message "User $username is already member of the group $groupname" -Type Information $exists = 1 } } if ($exists -eq 0) { $user = Get-MsolUser -SearchString $username $null = Add-MsolGroupMember -GroupObjectId $group.objectid -GroupMemberObjectId $user.objectid -GroupMemberType User write-log -Message "Added user $username to group $($groupname)" } } elseif($type -eq 'office'){ $username = $Username.split('@')[0] $members = get-unifiedgrouplinks -identity $groupname -linktype members $found = $false foreach($member in $members){ if($member.name -eq $Username){ $found = $true break } } if($found -eq $true){ write-log "User '$UserName' is already member of the Office Group '$GroupName'" } else { $OK = $false while($OK -eq $false){ try{ write-log -type verbose -message "Attempting to add '$UserName' to group '$groupname'" while((get-user -ErrorAction Ignore -Identity $UserName) -eq $null){ } $null = Add-UnifiedGroupLinks -LinkType members -Identity $groupname -Links $Username $OK = $true } catch { if($_.Exception.Message -like "*Couldn't find object*"){} else {throw $_} } } write-log "User '$UserName' is now member of the Office Group '$GroupName'" } } } Catch { throw "Cannot add User $username to group $($groupname): $_" } } |