CreateGroupusingCsv.ps1


<#PSScriptInfo
 
.VERSION 3.0
 
.GUID 48f1b614-29b2-46ad-abef-10c3f9cfd491
 
.AUTHOR manidurai
 
.COMPANYNAME
 
.COPYRIGHT
 
.TAGS
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
 
#>
 









<#
 
.DESCRIPTION
Using this script you can create the office 365 group with member using csv
 
.PARAMETER ClientID
 
Enter your appliacation client id
 
.PARAMETER ClientSecret
 
Enter the application secret password
 
.PARAMETER TenantID
Enter the Azure AD tenant id
 
.PARAMETER Path
Give the Office 365 groups with member list csv file path
 
.EXAMPLE
CreateGroupusingCsv.ps1 -ClientID xxxxxxxxxxxxxxxxxxxxxxxxx -ClientSecret "xxxxxxxxxxx~!" -TenantID "xxxxx-xxxx-xxxx-xxxx-xxxxxxxx" -Path "C:\Groupwithmembers.csv"
 
 
 
#>
 
Param(
[Parameter(ParameterSetName = "Inputparameter",Position=1,Mandatory=$True)]
[String]$ClientID,
[Parameter(ParameterSetName = "Inputparameter",Position=2,Mandatory=$True)]
[String]$ClientSecret,
[Parameter(ParameterSetName = "Inputparameter",Position=3,Mandatory=$True)]
[String]$TenantID,
[Parameter(ParameterSetName = "Inputparameter",Position=4,Mandatory=$True)]
[String]$Path
)
Function Export-Group
{
    param(
           #credentials
           [Parameter(Mandatory=$True,position=0)]
                [string]$ClientID,
           [Parameter(Mandatory=$True,position=1)]
                [string]$ClientSecret,
           [Parameter(Mandatory=$True,position=2)]
                [string]$TenantID,
           [Parameter(Mandatory=$True,position=3)]
                [string]$Path
         )

    $LoginUrl="https://login.microsoft.com"
    $Resource="https://graph.microsoft.com" 

    #Get access token
    $Body = @{grant_type="client_credentials";resource=$Resource;client_id=$ClientID;client_secret=$ClientSecret}
    $TokenLink= "https://login.microsoftonline.com/"+ $TenantID +"/oauth2/token"
    $OAuth      = Invoke-RestMethod -Method POST -Uri $TokenLink -Body $Body

    #Header
    $HeaderParams = @{'Authorization'="$($OAuth.token_type) $($OAuth.access_token)"}

    #Fetch groups
    $GroupsUri = "https://graph.microsoft.com/v1.0/groups"
    $Groups=Invoke-RestMethod -Method get -Uri $GroupsUri -Headers $HeaderParams

    $Groups.value|ForEach-Object{
       
            $Group=$_
            $MemberName=''
            #fetch members for current groups
            $MembersUri="https://graph.microsoft.com/v1.0/groups/"+$Group.id+"/members"
            $Members=Invoke-RestMethod -Method get -Uri $MembersUri -Headers $HeaderParams
            $Members.value|ForEach-Object{
            
                $Member=$_
                #comma seperation
                if($MemberName -eq '')
                {
                    $MemberName+=$Member.displayname
                }else{
                    $MemberName+=','
                    $MemberName+=$Member.displayname
                }             
             }
    New-Object -TypeName PSObject -Property @{
    Groupname = $Group.displayname
    Members = $MemberName}
    }|select groupname,members|Export-Csv $Path -NoTypeInformation #Export to csv

}
Export-Group -ClientID xxxxxxxxxxxxxxxxxxxxxxxxx -ClientSecret "xxxxxxxxxxx~!" -TenantID "xxxxx-xxxx-xxxx-xxxx-xxxxxxxx" -Path "C:\Groupwithmembers.csv"