Blog

Microsoft Entra’da Lisanslı Grupları Listeleme Yöntemleri

Kurumsal çevrenizde lisans yönetimi kritik bir rol oynar. Lisansların hangi gruplara atanıp hangilerinde kullanılmadığının bir raporunu oluşturmak, maliyet optimizasyonu ve kaynak yönetimi açısından oldukça faydalı olabilir. Bu yazıda, Microsoft Entra üzerinde PowerShell ve Microsoft Graph API kullanarak lisans etkinleştirilmiş grupları nasıl listeleyeceğinizi öğreneceksiniz.

Neden Lisans Etkin Gruplarını Bulmalısınız?

Günümüzde birçok kuruluş, grup tabanlı lisanslama modelini kullanarak lisanslarını yönetmektedir. Bu modelde, lisanslar gruplara atanır ve o gruptaki tüm kullanıcılara otomatik olarak uygulanır. Ancak, zamanla bu grupların sayısı arttıkça, hangi gruplara hangi lisansların atandığını takip etmek zorlaşabilir. İşte bu noktada PowerShell devreye giriyor. PowerShell ile yazacağımız basit bir betik sayesinde, lisans etkinleştirilmiş tüm grupları hızlı ve kolay bir şekilde tespit edebiliriz.

Gereksinimler

Lisanslı grupları listelemek için aşağıdaki gereksinimleri karşılamanız gerekir:

  • PowerShell Modülleri: İş istasyonunuzda Microsoft.Graph.Authentication ve Microsoft.Graph.Groups modüllerinin yüklü olması gerekmektedir.
    • Kurulum: Install-Module Microsoft.Graph -Scope CurrentUser
  • Yönetici İzni: Microsoft Graph’ta Group.Read.All ve Organization.Read.All izinlerine sahip bir yönetici hesabı gereklidir.

PowerShell Betiği ile Lisanslı Grupları Bulma

Aşağıdaki adımları izleyerek lisanslı grupları bulabilirsiniz:

  • Microsoft Graph’a Bağlanın: İlk olarak, gerekli izinlerle Microsoft Graph’a bağlanmanız gerekiyor.
Microsoft Graph API Bağlantısı: Connect-MgGraph -Scopes Organization.Read.All, Group.Read.All

Lisans Atanmış Grupları Listeleme

Bu komut sayesinde, sadece lisans atanılmış gruplar listelenir.

Get-MgGroup -Filter "assignedLicenses/`$count ne 0" `
-ConsistencyLevel eventual -Property "displayName,assignedLicenses"
Get-MgGroup -All -Property Id, MailNickname, DisplayName, GroupTypes, Description, AssignedLicenses | Where-Object {$_.AssignedLicenses -ne $null }

Lisansları olan Gruplar için İstatistikleri Alma

Aşağıdaki betik, lisans atanan gruplar hakkında detaylı bilgiler almanızı sağlar:

# Import User Graph Module
Import-Module Microsoft.Graph.Users
# Authenticate to MS Graph
Connect-MgGraph -Scopes "User.Read.All", "Directory.Read.All", "Group.ReadWrite.All"
#get all groups with licenses
$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 = @()
# Filter the groups to only include those that have licenses assigned
$groups = $groups | Where-Object {$_.AssignedLicenses -ne $null}
# For each group, get the group name, license types, total user count, licensed user count, and license error count
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
}

# Format the output and print it to the console
$groupInfoArray | Format-Table -AutoSize

Detaylı Raporlama

Bir grup için atanmış lisans SKU’larının çözülmüş halini almak için aşağıdaki betiği kullanabilirsiniz:

Connect-MgGraph -Scopes Organization.Read.All, Group.Read.All

$skus = Get-MgSubscribedSku
$groups = Get-MgGroup -Filter "assignedLicenses/`$count ne 0" -Property "displayName,assignedLicenses"

$groups | ForEach-Object {
    $licenses = @()
    foreach ($license in $_.AssignedLicenses.SkuId) {
        $skuName = ($skus | Where-Object { $_.SkuId -eq $license }).SkuPartNumber
        $licenses += $skuName
    }
    [PSCustomObject]@{
        GroupName = $_.DisplayName
        Licenses  = $licenses -join ", "
    }
} | Format-Table -AutoSize

Sonuçları bir CSV dosyasına aktarmak için:

$groups | Export-Csv -Path "C:\LisansliGruplar.csv" -NoTypeInformation -Encoding UTF8

Sonuç

Microsoft Graph PowerShell kullanarak Microsoft Entra’da lisans etkinleştirilmiş grupları nasıl bulacağınızı adım adım anlattım. Bu yöntem, büyük ölçekli ortamlar için performansı korurken, lisansların nasıl dağıtıldığını anlamanızı sağlar.

Düzenli olarak bu raporu çalıştırarak, lisans yönetiminizi optimize edebilir ve maliyetleri kontrol altında tutabilirsiniz. Lisans yönetimi, kurumsal IT yönetiminin kritik bir parçasıdır. Bu tür otomasyonlar, hem zamandan tasarruf etmenize hem de uyumluluk risklerini azaltmanıza yardımcı olur.

Bu bilgilerin faydalı olması dileğiyle..

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu