Como Gerar Relatório de Uso de Licenças no Microsoft 365 com PowerShell

Fala pessoal, tudo bem com vocês?

Se você trabalha administrando Microsoft 365, com certeza já passou pela situação de ter que descobrir quem está usando quais licenças — seja pra controle de custos, planejamento ou só pra entender o que realmente está sendo usado.

Esse script aqui vai salvar teu tempo (e tua paciência também rsrs).

O que esse script faz?

  • Lista todos os usuários que possuem determinadas licenças específicas
  • Mostra o nome de usuário, SKU da licença e o nome da licença
  • Exporta tudo pra um arquivo .csv bonitinho
  • Tudo automatizado, sem sofrimento

O que você precisa pra rodar?

  • Ter o módulo Microsoft.Graph instalado
  • Ter permissão pra rodar consultas com Directory.Read.All
  • Uma conta com acesso de admin no Microsoft 365

Bora lá pro código:

#
.DESCRIPTION
    Criar relatório de licenças usadas via PowerShell
#>

Install-Module -Name Microsoft.Graph -Force

Connect-MgGraph -Scopes "Directory.Read.All"

Get-MgSubscribedSku | Select-Object SkuId, SkuPartNumber

# Aqui você coloca as SKUs que quer rastrear

$skuid = @(
    "f8a1db68-be16-40ed-86d5-cb42ce701560", # POWER_BI_PRO
    "f30db892-07e9-47e9-837c-80727f46fd3d", # FLOW_FREE
    "606b54a9-78d8-4298-ad8b-df6ef4481c80", # CCIBOTS_PRIVPREV_VIRAL
    "c42b9cae-ea4f-4ab7-9717-81576235ccac", # DEVELOPERPACK_E5
    "3f9f06f5-3c31-472c-985f-62d9c10ec167", # Power_Pages_vTrial_for_Makers
    "8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b", # RIGHTSMANAGEMENT_ADHOC
    "5b631642-bd26-49fe-bd20-1daaa972ef80"  # POWERAPPS_DEV
)

$users = Get-MgUser -All

$usersL= @()

foreach ($user in $users) {
    $userslicenses = Get-MgUserLicenseDetail -UserId $user.Id

    foreach ($licenca in $userslicenses) {
        if ($skuid -contains $licenca.SkuId) {
            $usersL += [PSCustomObject]@{
               Nome        = $user.UserPrincipalName
               Licenca     = $licenca.SkuId
               NomeLicenca = $licenca.SkuPartNumber
            }
        }
    }
}

$usersL | Export-Csv -Path "C:\Temp\LicencasUsuarios.csv" 

Write-Host "Relatório gerado com sucesso: C:\Temp\LicencasUsuarios.csv" -ForegroundColor Green

Disconnect-Graph

Qual a parte boa aqui?

  • Você não precisa sair catando usuário por usuário.
  • Pode rodar o script sempre que quiser atualizar o relatório.
  • O resultado vai direto pro C:\Temp\LicencasUsuarios.csv — se quiser, é só abrir no Excel.

Administrar sem automação é pedir pra sofrer, né? Script simples assim vira ouro no dia a dia.
Se curtiu, compartilha com teu time. E fica de olho aqui no blog — vem muito mais coisa útil por aí! 🚀