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" |