Skip to content

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"