Mostefai Mohammed Amine

Software and Cloud Architect

Amine
  • Contact
Previous Post
Next Post
Oct 08, 2016 PowershellOffice 365

Useful scripts for Group manipulation in Office 365

Hi, let me share with you two useful powershell scripts that permit to list the office 365 groups with the member count and to move users from a group to another group.

Of course, you are supposed to be connected to your Office 365 using Connect-MsolService commandlet.

Listing the groups with member count

Of course, there is the Get-MsolGroup that list all the office 365 groups but we are obliged to call Get-MsolGroupMember individually to get the members and their count of a given group. The script below lists the existing group and counts their members. We use the measure pipeline to avoid data loading overhead.

Write-Host "=======================" -ForegroundColor Green
Write-Host "Listing groups and member count" -ForegroundColor Green
Write-Host "=======================" -ForegroundColor Green
$groups = Get-MsolGroup 
Write-Host "Got $($groups.Count) groups" -ForegroundColor Yellow
$i = 1
$groups | ForEach-Object {
    $members = Get-MsolGroupMember -GroupObjectId $_.ObjectId | measure
    Write-Host "group [$($i) of $($groups.Count)] : $($_.DisplayName) | members: $($members.Count)" -ForegroundColor Cyan
    $i = $i + 1
}

Moving Users from Groups

The second script is very useful to group management. The purpose of this script is to move all the users of a source group to a destination group. It takes two parameters, the object ids of the source and destination groups.

Param([Guid] $source, [Guid] $destination)
Write-Host "=======================" -ForegroundColor Green
Write-Host "Moving users from group $($source) to destination $($destination)" -ForegroundColor Green
Write-Host "=======================" -ForegroundColor Green
$sourceGroup = Get-MsolGroup -ObjectId $source
Write-Host "source group name $($sourceGroup.DisplayName)" -ForegroundColor Yellow
$destGroup = Get-MsolGroup -ObjectId $destination
Write-Host "destination group name : $($destGroup.DisplayName)" -ForegroundColor Yellow
Write-Host "loading members from source group" -ForegroundColor Yellow
$members = Get-MsolGroupMember -GroupObjectId $source
Write-Host "loaded source group members, count : $($members.Count)" -ForegroundColor Yellow
$i = 1
$members | ForEach-Object {
    Write-Host "moving user $($_.DisplayName), [$($i) of $($members.Count)]" -ForegroundColor Cyan
    Add-MsolGroupMember -GroupObjectId $destination -GroupMemberObjectId $_.ObjectId
    Remove-MsolGroupMember -GroupObjectId $source -GroupMemberObjectId $_.ObjectId 
    Write-Host "user successfully moved" -ForegroundColor Cyan
    $i = $i + 1
}
If($i -gt 1)
{
    Write-Host "successfully moved $($members.Count) users" -ForegroundColor Green
    $members = Get-MsolGroupMember -GroupObjectId $source
    Write-Host "source group members count : $($members.Count)" -ForegroundColor Green
    $members = Get-MsolGroupMember -GroupObjectId $destination
    Write-Host "destination group members count : $($members.Count)" -ForegroundColor Green
}

Enjoy !

scriptgroup
Share This Post

Related posts

  • Useful scripts for Group manipulation in Office 365 Hi, let me share with you two useful powershell scripts that permit to list the office 365 groups wi...
  • Angular 2 + ASP.NET Core + SASS Starter Visual Studio 2015 Solution Hi, Angular 2 is a very promising framework and one of its biggest advantages is that it takes the p
  • Resolving the “Accessing referenced file from is not allowed” issue in Sharepoint Very often, Sharepoint publishing pages display the following message after modifying the master pag
Saving the comment

Cancel reply to comment

The captcha value you provided is incorrect.