Atualizado em 2026-01-24 • Automação • Identidade

PowerShell para Entra ID (Azure AD) — automações úteis para identidade e licenças

Scripts prontos para agilizar tarefas de identidade no Entra ID (Azure AD): usuários, grupos, licenças, relatórios e troubleshooting.

1) Conectar ao Entra ID

Use o módulo Microsoft.Graph (recomendado). Instale e conecte:

# Instalar módulos principais
Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force

# Conectar interativamente (consentimento só na 1ª vez)
Connect-MgGraph -Scopes "User.ReadWrite.All","Group.ReadWrite.All","Directory.Read.All","AuditLog.Read.All" -NoWelcome
Select-MgProfile -Name "beta"   # opcional: recursos em preview

# Ver conta atual
gm account
(Get-MgContext).Account

2) Usuários — criar, atualizar, redefinir senha

# Criar usuário básico
$newUser = New-MgUser -AccountEnabled:$true -DisplayName "João Silva" -MailNickname "joaos" -UserPrincipalName "joaos@contoso.com" -PasswordProfile @{ Password = "P@ssw0rd!" }

# Atualizar atributos (cargo/telefone)
Update-MgUser -UserId $newUser.Id -JobTitle "Analista" -MobilePhone "+55 11 90000-0000"

# Forçar redefinição de senha no próximo logon
Update-MgUser -UserId $newUser.Id -PasswordProfile @{ ForceChangePasswordNextSignIn = $true }

# Listar usuários com filtro
Get-MgUser -Filter "startsWith(displayName,'João')" -All | Select-Object Id, DisplayName, UserPrincipalName

3) Grupos — membros e regra dinâmica

# Criar grupo de segurança
$grp = New-MgGroup -DisplayName "GRP-Financeiro" -MailEnabled:$false -MailNickname "grp-fin" -SecurityEnabled:$true

# Adicionar membros
Add-MgGroupMemberByRef -GroupId $grp.Id -OdataId "/users/$($newUser.Id)"

# Criar grupo dinâmico por atributo (ex.: department)
$rule = "(user.department -eq \"Finance\")"
$dyn = New-MgGroup -DisplayName "GRP-DYN-Finance" -MailEnabled:$false -MailNickname "grp-dyn-fin" -SecurityEnabled:$true -GroupTypes "DynamicMembership" -MembershipRule $rule -MembershipRuleProcessingState "On"

4) Licenças — atribuição em massa

# Obter SKUs disponíveis
gskus = Get-MgSubscribedSku | Select-Object SkuId, SkuPartNumber

# Ex.: atribuir Microsoft 365 E3 (substitua o SkuId correto)
$skuId = (Get-MgSubscribedSku | Where-Object SkuPartNumber -eq "ENTERPRISEPACK").SkuId

# Atribuir para todos de um grupo
groupId = $grp.Id
Get-MgGroupMember -GroupId $groupId -All | ForEach-Object {
  Set-MgUserLicense -UserId $_.Id -AddLicenses @{SkuId=$skuId} -RemoveLicenses @()
}

5) Relatórios CSV — inventário e sign-ins

# Exportar inventário de usuários com status de licença
$users = Get-MgUser -All -Property Id,DisplayName,UserPrincipalName,AssignedLicenses
$users | Select-Object DisplayName,UserPrincipalName,@{N='SkuCount';E={$_.AssignedLicenses.Count}} | Export-Csv users-licenses.csv -NoTypeInformation -Encoding UTF8

# Baixar logs de sign-in (precisa AuditLog.Read.All)
$since = (Get-Date).AddDays(-7).ToString('o')
Get-MgAuditLogSignIn -All -Filter "createdDateTime ge $since" | \
  Select-Object userDisplayName,userPrincipalName,appDisplayName,ipAddress,status | \
  Export-Csv signins-last7d.csv -NoTypeInformation -Encoding UTF8

6) Filtros — regras dinâmicas úteis

// Somente usuários habilitados
authenticationStatus -eq "enabled"

// iOS corporativos (para filtros do Intune)
(device.deviceOSType -eq "iOS") and (device.deviceOwnership -eq "Company")

// Atribuir por domínio
(user.userPrincipalName -contains "@contoso.com")

7) Dicas e boas práticas

← Voltar para Tutoriais
Autor: BlueCloud Sphere • 2026-01-24