Forum Discussion

jcasqueiro's avatar
jcasqueiro
Brass Contributor
Sep 19, 2024
Solved

O365 Groups | Removing group membership in bulk for certain groups

Hi,

I have a csv list of O365 groups that I want to remove all user memberships from.

Does anyone have a script to achieve that?

Thanks/Brgds

joao

  • jcasqueiro 

    From ChatGPT 4o:

    To remove all users from a list of Office 365 groups (specified in a CSV file) using PowerShell, you'll need to:

    1. **Install the Microsoft Online module** to manage Office 365 groups.
    2. **Connect to your Office 365 tenant** using your admin credentials.
    3. **Process the CSV file** and remove the members from the groups listed in it.

    Here’s an example PowerShell script to do this:

    ### Prerequisites:
    - You should have the `AzureAD` or `Microsoft.Graph` module installed.
    - You need admin access to the Office 365 tenant.

    ### CSV Format:
    Your CSV file should contain a list of Group IDs or names in a column, say `GroupName` or `GroupID`.

    ```csv
    GroupName
    Group1
    Group2
    Group3
    ```

    # Import the required module
    Import-Module AzureAD
    
    # Sign in to your Office 365 tenant
    Connect-AzureAD
    
    # Path to your CSV file
    $csvPath = "C:\path\to\your\csvfile.csv"
    
    # Import the CSV containing the list of groups
    $groups = Import-Csv -Path $csvPath
    
    # Iterate over each group in the CSV
    foreach ($group in $groups) {
    $groupName = $group.GroupName # Assuming the column is named GroupName
    
    # Get the Group ID by Group Name
    $o365Group = Get-AzureADGroup -SearchString $groupName
    
    if ($o365Group) {
    Write-Host "Processing group: $groupName"
    
    # Get all members of the group
    $members = Get-AzureADGroupMember -ObjectId $o365Group.ObjectId
    
    foreach ($member in $members) {
    # Remove each member from the group
    Remove-AzureADGroupMember -ObjectId $o365Group.ObjectId -MemberId $member.ObjectId
    Write-Host "Removed member: $($member.UserPrincipalName) from group: $groupName"
    }
    } else {
    Write-Host "Group $groupName not found"
    }
    }
    
    # Disconnect from Azure AD
    Disconnect-AzureAD

     

    ### Explanation:
    1. **Connect-AzureAD**: Establishes a connection to your Office 365 tenant.
    2. **Import-Csv**: Loads the CSV containing the list of group names.
    3. **Get-AzureADGroup**: Retrieves the Office 365 group based on the name in the CSV.
    4. **Get-AzureADGroupMember**: Retrieves all members of the group.
    5. **Remove-AzureADGroupMember**: Removes each member from the group.
    6. **Disconnect-AzureAD**: Closes the session after processing.

    Make sure to update the `$csvPath` variable to the correct path of your CSV file.

    ### Microsoft Graph Alternative:
    If you are using Microsoft Graph, the steps would be similar, but you will use `Microsoft.Graph` module cmdlets instead. Let me know if you need a script for that too!

2 Replies

  • DanaWhite's avatar
    DanaWhite
    Brass Contributor

    jcasqueiro 

    From ChatGPT 4o:

    To remove all users from a list of Office 365 groups (specified in a CSV file) using PowerShell, you'll need to:

    1. **Install the Microsoft Online module** to manage Office 365 groups.
    2. **Connect to your Office 365 tenant** using your admin credentials.
    3. **Process the CSV file** and remove the members from the groups listed in it.

    Here’s an example PowerShell script to do this:

    ### Prerequisites:
    - You should have the `AzureAD` or `Microsoft.Graph` module installed.
    - You need admin access to the Office 365 tenant.

    ### CSV Format:
    Your CSV file should contain a list of Group IDs or names in a column, say `GroupName` or `GroupID`.

    ```csv
    GroupName
    Group1
    Group2
    Group3
    ```

    # Import the required module
    Import-Module AzureAD
    
    # Sign in to your Office 365 tenant
    Connect-AzureAD
    
    # Path to your CSV file
    $csvPath = "C:\path\to\your\csvfile.csv"
    
    # Import the CSV containing the list of groups
    $groups = Import-Csv -Path $csvPath
    
    # Iterate over each group in the CSV
    foreach ($group in $groups) {
    $groupName = $group.GroupName # Assuming the column is named GroupName
    
    # Get the Group ID by Group Name
    $o365Group = Get-AzureADGroup -SearchString $groupName
    
    if ($o365Group) {
    Write-Host "Processing group: $groupName"
    
    # Get all members of the group
    $members = Get-AzureADGroupMember -ObjectId $o365Group.ObjectId
    
    foreach ($member in $members) {
    # Remove each member from the group
    Remove-AzureADGroupMember -ObjectId $o365Group.ObjectId -MemberId $member.ObjectId
    Write-Host "Removed member: $($member.UserPrincipalName) from group: $groupName"
    }
    } else {
    Write-Host "Group $groupName not found"
    }
    }
    
    # Disconnect from Azure AD
    Disconnect-AzureAD

     

    ### Explanation:
    1. **Connect-AzureAD**: Establishes a connection to your Office 365 tenant.
    2. **Import-Csv**: Loads the CSV containing the list of group names.
    3. **Get-AzureADGroup**: Retrieves the Office 365 group based on the name in the CSV.
    4. **Get-AzureADGroupMember**: Retrieves all members of the group.
    5. **Remove-AzureADGroupMember**: Removes each member from the group.
    6. **Disconnect-AzureAD**: Closes the session after processing.

    Make sure to update the `$csvPath` variable to the correct path of your CSV file.

    ### Microsoft Graph Alternative:
    If you are using Microsoft Graph, the steps would be similar, but you will use `Microsoft.Graph` module cmdlets instead. Let me know if you need a script for that too!

    • jcasqueiro's avatar
      jcasqueiro
      Brass Contributor
      Hi Dana,
      Thanks. If you could share the ms graph script it would be great (I am transitioning to graph when possible).
      All the best
      joao

Resources