groupmembers
powershell
connect-mggraph -Scopes Group.Read.All
$groups = @()
$ids = Get-MgGroup -all | Where-Object { $_.CreatedDateTime -ge $((Get-Date).AddDays(-30)) } | select id, displayname, description
foreach($id in $ids){
$groups += $id
$members = Get-MgGroupMember -GroupId $id.id
foreach ($member in $members){$groups += get-mguser -userid $member.id}
$groups += ""
}
$groups | export-csv -delimiter ";" -path "C:\temp\groupmembers.csv"
Group licenses
powershell
connect-mggraph
$groups = Get-MgGroup -All -Property LicenseProcessingState, DisplayName, Id, AssignedLicenses | Select-Object displayname, Id, LicenseProcessingState, AssignedLicenses | Select-Object DisplayName, Id, AssignedLicenses -ExpandProperty LicenseProcessingState
| Select-Object DisplayName, State, Id, AssignedLicenses | Where-Object {$_.State -eq "ProcessingComplete"}
$groupInfoArray = @()
$groups = $groups | Where-Object {$_.AssignedLicenses -ne $null}
foreach ($group in $groups) {
$groupInfo = New-Object PSObject
$groupInfo | Add-Member -MemberType NoteProperty -Name "Group Name" -Value $group.DisplayName
$groupInfo | Add-Member -MemberType NoteProperty -Name "Group ID" -Value $group.Id
$groupInfo | Add-Member -MemberType NoteProperty -Name "License Types" -Value ($group.AssignedLicenses | Select-Object -ExpandProperty SkuId)
$groupInfo | Add-Member -MemberType NoteProperty -Name "Total User Count" -Value (Get-MgGroupMember -GroupId $group.Id -All | Measure-Object).Count
$groupInfo | Add-Member -MemberType NoteProperty -Name "Licensed User Count" -Value (Get-MgGroupMember -GroupId $group.Id -All | Where-Object {$_. LicenseProcessingState -eq "ProcessingComplete"} | Measure-Object).Count
$groupInfo | Add-Member -MemberType NoteProperty -Name "License Error Count" -Value (Get-MgGroupMember -GroupId $group.Id -All | Where-Object {$_.LicenseProcessingState -eq "ProcessingFailed"} | Measure-Object).Count
$groupInfoArray += $groupInfo
}
$translationTable = Invoke-RestMethod -Method Get -Uri "https://download.microsoft.com/download/e/3/e/e3e9faf2-f28b-490a-9ada-c6089a1fc5b0/Product%20names%20and%20service%20plan%20identifiers%20for%20licensing.csv" | ConvertFrom-Csv
foreach($entry in $groupInfoArray){
$license = $translationTable | Where-Object {$_.GUID -eq "$($entry."License Types")"}
$entry."License Types" = $license[0].Product_Display_Name
}
$groupinfoArray | export-csv -delimiter ";" -path "c:\temp\grouplicenses.csv"
User linceses
powershell
$licenses = get-mguser -all | foreach-object {
$_.DisplayName
Get-MgUserLicenseDetail -userid $_.id -property id, skuid, skupartnumber, serviceplans | select id, skupartnumber, serviceplans
}
$licenses | convertto-json -depth 10 | out-file "C:\temp\test.json"