CreateGroupusingCsv.ps1
|
<#PSScriptInfo .VERSION 1.0 .GUID 48f1b614-29b2-46ad-abef-10c3f9cfd491 .AUTHOR manidurai .COMPANYNAME .COPYRIGHT .TAGS .LICENSEURI .PROJECTURI .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES #> <# .DESCRIPTION Using this script you create the office 365 group with member using 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" |