Paulo Costa TI – Expert Solutions Microsoft | MCSE | MCSA | MCT https://paulocostati.com.br/ Mon, 26 May 2025 01:23:16 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.8.1 https://i0.wp.com/paulocostati.com.br/wp-content/uploads/2024/09/Logotipo-empresa-de-programacao-sistemas-e-tecnologia.png?fit=32%2C32&ssl=1 Paulo Costa TI – Expert Solutions Microsoft | MCSE | MCSA | MCT https://paulocostati.com.br/ 32 32 209994073 Como Criar um Relatório de Usuários Inativos com Licença no Microsoft 365 Usando PowerShell https://paulocostati.com.br/exchange-online/como-criar-um-relatorio-de-usuarios-inativos-com-licenca-no-microsoft-365-usando-powershell/?utm_source=rss&utm_medium=rss&utm_campaign=como-criar-um-relatorio-de-usuarios-inativos-com-licenca-no-microsoft-365-usando-powershell https://paulocostati.com.br/exchange-online/como-criar-um-relatorio-de-usuarios-inativos-com-licenca-no-microsoft-365-usando-powershell/#respond Mon, 26 May 2025 01:23:12 +0000 https://paulocostati.com.br/?p=116 Aprenda a gerar relatórios de usuários inativos no Microsoft 365 com PowerShell e Microsoft Graph. Ideal para administradores que buscam otimizar licenças e automatizar tarefas. Script gratuito disponível no GitHub!

O post Como Criar um Relatório de Usuários Inativos com Licença no Microsoft 365 Usando PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
Fala pessoal, tudo bem com vocês? No post de hoje eu vou mostrar como usar PowerShell para identificar licenças do Microsoft 365 que estão paradas e custando dinheiro à toa para sua empresa.

Recentemente, recebi mensagens de profissionais que reclamam sobre como é difícil controlar essas licenças e evitar gastos desnecessários. A boa notícia? Dá para automatizar isso com PowerShell, e eu vou mostrar como.

Antes de começar, já vou avisar que não é algo super simples, mas é totalmente possível e vai te ajudar demais, especialmente se você não quer perder tempo fazendo isso tudo na mão, todo mês.

Por que identificar licenças ociosas é importante?


Você já parou para pensar quantas licenças do Microsoft 365 sua empresa paga e que não estão sendo usadas? Isso pode representar um gasto enorme todo mês, porque essas licenças ficam ativas mesmo sem uso.

Se o financeiro souber quais licenças estão paradas, pode cancelar essas assinaturas e economizar um bom dinheiro. Além disso, ajuda na segurança, porque menos contas ativas significam menos riscos.

O poder do PowerShell para resolver isso

Com PowerShell, você pode consultar o Microsoft 365, identificar quais usuários têm licença e não acessaram nada nos últimos 90 dias (ou outro período que desejar). Depois, gerar um relatório fácil de entender, em HTML, para mostrar para o financeiro ou seu gestor.

E o melhor: você pode agendar essa verificação para rodar automaticamente, sem precisar lembrar disso todo mês.

Pré-requisitos para rodar o script

Antes de rodar o script que vou mostrar, você precisa ter:

  • Uma conta com permissões de administrador no Microsoft 365 (Azure AD).
  • PowerShell 7 ou superior instalado na sua máquina.
  • O módulo Microsoft.Graph para PowerShell instalado (o script já verifica e instala se não tiver).
  • Conexão com a internet ativa.
  • Permissão para usar o Microsoft Graph API com o escopo User.Read.All.

O script que faz isso tudo pra você

Abaixo está o script completo. Ele conecta no Microsoft 365, busca os usuários com licenças e que não acessaram os serviços nos últimos 90 dias, e cria um relatório em HTML bem organizado.

<#
.DESCRIPTION
    Script para gerar um relatório de usuários do Microsoft 365 que possuem licenças atribuídas, mas não acessaram a conta nos últimos 90 dias. 
    O relatório é gerado em formato HTML e salvo na pasta atual.
.AUTHOR
    Paulo Costa

.EXAMPLE
   .\relatorio365lic.ps1
    Executa o script para gerar o relatório de usuários inativos com licenças atribuídas.

.PREREQUISITES
    - Módulo Microsoft.Graph instalado.
    - Permissões de leitura de usuários no Microsoft Graph (User.Read.All).
    - PowerShell 7.0 ou superior recomendado.
    - Compatível com PowerShell 5.1, mas com limitações de performance.
#>

if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) {
    Write-Host "Módulo Microsoft.Graph não encontrado. Instalando..." -ForegroundColor Yellow
    Install-Module Microsoft.Graph -Scope CurrentUser -Force
}

Import-Module Microsoft.Graph

Write-Host "Conectando ao Microsoft Graph..." -ForegroundColor Cyan
Connect-MgGraph -Scopes User.Read.All

$DataCorte = (Get-Date).AddDays(-90)

Write-Host "Buscando usuários com licenças e inativos há mais de 90 dias..." -ForegroundColor Cyan

$usuarios = Get-MgUser -All -Property DisplayName, UserPrincipalName, AssignedLicenses, SignInActivity

$UsuariosInativos = $usuarios | Where-Object {
    $_.AssignedLicenses.Count -gt 0 -and (
        $_.SignInActivity.LastSignInDateTime -eq $null -or 
        [datetime]$_.SignInActivity.LastSignInDateTime -lt $DataCorte
    )
}

if ($UsuariosInativos.Count -eq 0) {
    Write-Host "Nenhum usuário inativo encontrado com licença atribuída." -ForegroundColor Green
    exit
}

$htmlReport = @"
<html>
<head>
    <title>Relatório de Licenças Microsoft 365 Inativas</title>
    <style>
        body { font-family: Arial, sans-serif; background-color:#f4f4f4; }
        table { border-collapse: collapse; width: 100%; background-color: #fff; }
        th, td { padding: 12px; border: 1px solid #ddd; text-align: left; }
        th { background-color: #0078d4; color: white; }
        tr:hover { background-color: #e1f5fe; }
    </style>
</head>
<body>
    <h2>Relatório de Licenças Microsoft 365 Inativas (mais de 90 dias)</h2>
    <p><strong>Empresa:</strong> Paulo Costa TI</p>
    <p><strong>Data:</strong> $(Get-Date -Format 'dd/MM/yyyy')</p>
    <p><strong>Gerado por:</strong> $env:USERNAME</p>
    <table>
        <tr>
            <th>Nome</th>
            <th>Email</th>
            <th>Último Login</th>
        </tr>
"@

foreach ($user in $UsuariosInativos) {
    $lastSignIn = if ($user.SignInActivity.LastSignInDateTime) {
        [datetime]$user.SignInActivity.LastSignInDateTime
    } else {
        "Nunca"
    }

    $htmlReport += @"
        <tr>
            <td>$($user.DisplayName)</td>
            <td>$($user.UserPrincipalName)</td>
            <td>$lastSignIn</td>
        </tr>
"@
}

$htmlReport += @"
    </table>
</body>
</html>
"@

$reportPath = Join-Path -Path $PWD -ChildPath "LicencasInativas_$(Get-Date -Format 'yyyyMMdd_HHmmss').html"
$htmlReport | Out-File -FilePath $reportPath -Encoding UTF8

Write-Host "Relatório gerado com sucesso em: $reportPath" -ForegroundColor Green

Exemplo do relatório:

Como usar:

  1. Abra o PowerShell 7 ou superior como administrador.
  1. Abra o PowerShell 7 ou superior como administrador.
  2. Copie e cole o script ou salve num arquivo .ps1.
  3. Execute o script. Ele vai pedir para você se conectar no Microsoft 365.
  4. Após a conexão, ele vai gerar um relatório HTML na pasta onde você rodou o script.
  5. Abra o arquivo HTML no navegador e veja as licenças que estão inativas.

Quer mais scripts prontos e dicas para automatizar seu dia a dia?


Eu tenho uma área especial no meu GitHub onde compartilho scripts PowerShell como esse e outros que vão ajudar muito no seu trabalho, te economizar horas e mostrar seu valor na empresa.

Se liga lá no meu perfil e fique de olho nas novidades. Curte, comenta, compartilha e segue para não perder nada!

Automatizar tarefas com PowerShell é um divisor de águas para quem quer crescer na área de TI e mostrar resultados concretos. Então, bora colocar a mão na massa e parar de perder tempo com tarefas repetitivas?

O post Como Criar um Relatório de Usuários Inativos com Licença no Microsoft 365 Usando PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
https://paulocostati.com.br/exchange-online/como-criar-um-relatorio-de-usuarios-inativos-com-licenca-no-microsoft-365-usando-powershell/feed/ 0 116
Calendário do Outlook bagunçado? Veja como identifiquei e corrigi conflitos de reunião em massa com PowerShell https://paulocostati.com.br/exchange-online/calendario-do-outlook-baguncado-veja-como-identifiquei-e-corrigi-conflitos-de-reuniao-em-massa-com-powershell/?utm_source=rss&utm_medium=rss&utm_campaign=calendario-do-outlook-baguncado-veja-como-identifiquei-e-corrigi-conflitos-de-reuniao-em-massa-com-powershell https://paulocostati.com.br/exchange-online/calendario-do-outlook-baguncado-veja-como-identifiquei-e-corrigi-conflitos-de-reuniao-em-massa-com-powershell/#respond Sun, 04 May 2025 00:14:08 +0000 https://paulocostati.com.br/?p=111 Fala Pessoa, tudo bem com vocês? Se você já perdeu tempo resolvendo reunião que não aparece, convite que some, horário que muda sozinho ou conflito de sala, este artigo é pra você. Eu te mostro como rastrear, diagnosticar e corrigir eventos de calendário bugados no Exchange/Outlook com PowerShell. Nada de clicar em mil caixas, nada […]

O post Calendário do Outlook bagunçado? Veja como identifiquei e corrigi conflitos de reunião em massa com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
Fala Pessoa, tudo bem com vocês?

Se você já perdeu tempo resolvendo reunião que não aparece, convite que some, horário que muda sozinho ou conflito de sala, este artigo é pra você. Eu te mostro como rastrear, diagnosticar e corrigir eventos de calendário bugados no Exchange/Outlook com PowerShell.

Nada de clicar em mil caixas, nada de adivinhar. Aqui é tiro certo.

O cenário: caos no calendário

Um usuário muda o horário da reunião. Outro responde “Aceitar” depois da alteração. A sala confirma o horário antigo. Resultado?

  • Reunião duplicada
  • Sala ocupada em horário errado
  • Gente indo pra call errada
  • Suporte virando psicólogo

A culpa é de quem? De ninguém. Ou melhor, de todo mundo. Mas o admin tem que resolver.

A arma secreta: Get-CalendarDiagnosticLog

Com esse cmdlet do Exchange, você pode ver:

  • Quem criou o evento
  • Quem alterou e quando
  • Qual cliente (Outlook, Mobile, Teams) causou conflito
  • Se o delegate ferrou tudo sem querer
$usuario = "contoso@contoso.com"
$data = Get-Date
Get-CalendarDiagnosticLog -Identity $usuario -StartDate $data.AddDays(-7) -EndDate $data |
Where-Object { $_.Subject -like "*reunião*" } |
Select Subject, Organizer, GlobalObjectId, IsMeeting, IsCancelled, LastModifiedTime, Client, CleanGlobalObjectId

Quer saber se o Teams comeu o convite? Tá lá. Quer saber se o usuário alterou via celular às 2 da manhã? Também tá lá.

Bônus: como cancelar o evento bugado via PowerShell

Se você achou o evento com problema, use Microsoft Graph ou EWS para cancelar a reunião com aviso pros convidados.
Quer script que faz isso com escolha de ID? Me chama.


Conclusão: pare de ser reativo

Se você ainda resolve problema de calendário “olhando o Outlook do usuário”, você está brincando de suporte. Admin de verdade investiga com logs e resolve com script.

Esse tipo de script aqui já me salvou em ambiente com mais de 100 mil caixas no Exchange Online.

O post Calendário do Outlook bagunçado? Veja como identifiquei e corrigi conflitos de reunião em massa com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
https://paulocostati.com.br/exchange-online/calendario-do-outlook-baguncado-veja-como-identifiquei-e-corrigi-conflitos-de-reuniao-em-massa-com-powershell/feed/ 0 111
Como Gerar Relatório de Uso de Licenças no Microsoft 365 com PowerShell https://paulocostati.com.br/microsoft-365/como-gerar-relatorio-de-uso-de-licencas-no-microsoft-365-com-powershell/?utm_source=rss&utm_medium=rss&utm_campaign=como-gerar-relatorio-de-uso-de-licencas-no-microsoft-365-com-powershell Sat, 26 Apr 2025 11:25:46 +0000 https://paulocostati.com.br/?p=105 Aprenda como gerar um relatório detalhado sobre o uso de licenças no Microsoft 365 com PowerShell. Neste tutorial, você vai entender como listar as licenças atribuídas aos usuários, identificar quais SKUs estão sendo utilizadas e exportar os dados para um arquivo CSV. Ideal para administradores que precisam monitorar o consumo de licenças de forma eficiente e automatizada.

O post Como Gerar Relatório de Uso de Licenças no Microsoft 365 com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
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í! 🚀

O post Como Gerar Relatório de Uso de Licenças no Microsoft 365 com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
105
Como Gerar Relatório de Caixas com Mais de X GB no Exchange On-Premises com PowerShell https://paulocostati.com.br/exchange-server/como-gerar-relatorio-de-caixas-com-mais-de-x-gb-no-exchange-on-premises-com-powershell/?utm_source=rss&utm_medium=rss&utm_campaign=como-gerar-relatorio-de-caixas-com-mais-de-x-gb-no-exchange-on-premises-com-powershell Fri, 25 Apr 2025 01:07:06 +0000 https://paulocostati.com.br/?p=94 Script para listar caixas de correio Exchange acima de um tamanho específico
Este script PowerShell permite identificar caixas de correio que ultrapassam um limite de tamanho, mostrando dados como nome, tamanho, quantidade de itens, banco de dados e último login, e exporta para um CSV. Ideal para manter o controle de armazenamento no Exchange On-Premises.

O post Como Gerar Relatório de Caixas com Mais de X GB no Exchange On-Premises com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
Fala pessoal, tudo bem com vocês?

Se você cuida de um ambiente Exchange On-Premises, provavelmente já precisou descobrir quais caixas estão ocupando mais espaço que deveriam. Seja pra planejamento de armazenamento, migração ou só pra evitar aquele susto quando o banco enche — esse script aqui vai te salvar.

O que esse script vai fazer e automatizar teu trabalho rsr

  • Listar todas as caixas que passam de um determinado tamanho (em GB) – Você que vai definir isso
  • Mostrar nome, tamanho, quantidade de itens, banco e último login
  • Exportar tudo pra um .csv

E o que você precisa pra rodar ele?

Você pode usar direto no Shell do Exchange ou importar o modulo do Exchange no seu PowerShell…

Eu prefiro rodar direto no Shell do Exchange, mas isso dai é com você

Bora lá pro código

param(
    [int]$LimiteGB = 10
)

$limiteBytes = $LimiteGB * 1GB
$caminhoCSV = "C:\Temp\CaixasAcimaDe${LimiteGB}GB.csv"

$relatorio = Get-Mailbox -ResultSize Unlimited | ForEach-Object {
    $estatisticas = Get-MailboxStatistics $_.Identity
    if ($estatisticas.TotalItemSize.Value.ToBytes() -gt $limiteBytes) {
        [PSCustomObject]@{
            Nome            = $_.DisplayName
            Tamanho         = $estatisticas.TotalItemSize
            Itens           = $estatisticas.ItemCount
            BancoDeDados    = $estatisticas.Database
            UltimoLogin     = $estatisticas.LastLogonTime
        }
    }
}

$relatorio | Export-Csv -Path $caminhoCSV -NoTypeInformation -Encoding UTF8
Write-Host "Relatório gerado com sucesso: $caminhoCSV"

Qual a parte boa ai?

Você não precisa definir direto no script o tamanho da caixa.. Nesse script ai tem um parâmetro chamado LimiteGB, que é quando você for usar o script você pode definir o tamanho que você procura.

Outra observação, o CSV é gerado na pasta C:\Temp, você pode modificar o caminho na variável caminhoCSV

Um exemplo de como usar

Vamos supor que eu salvei o script com o nome Relatorio-CaixasGrandes.ps1

.\Relatorio-CaixasGrandes.ps1 -LimiteGB 5

Eu defini o parâmetro para 5GB, agora é só esperar a magica acontecer

Administrar Exchange sem automação é pedir pra sofrer haha. Esse tipo de script simples, mas direto, evita surpresas, economiza tempo e te dá dados reais pra tomar decisão.

Se curtiu, compartilha com seu time. E se quiser automatizar mais coisas no Exchange, fica de olho aqui no blog — tem muito mais vindo por aí.

O post Como Gerar Relatório de Caixas com Mais de X GB no Exchange On-Premises com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
94
Como Automatizar a Desativação de Usuários no Microsoft 365 com PowerShell https://paulocostati.com.br/exchange-online/como-automatizar-a-desativacao-de-usuarios-no-microsoft-365-com-powershell/?utm_source=rss&utm_medium=rss&utm_campaign=como-automatizar-a-desativacao-de-usuarios-no-microsoft-365-com-powershell Mon, 21 Apr 2025 18:49:07 +0000 https://paulocostati.com.br/?p=84 Fala pessoal, tudo bem com vocês? Hoje vamos falar sobre um processo que todo administrador de TI já passou: o desligamento de um colaborador. E eu não estou falando só de cortar o acesso ao computador, mas de todos os outros serviços que o usuário utiliza no Microsoft 365: e-mail, Teams, OneDrive, licenças e por […]

O post Como Automatizar a Desativação de Usuários no Microsoft 365 com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
Fala pessoal, tudo bem com vocês?

Hoje vamos falar sobre um processo que todo administrador de TI já passou: o desligamento de um colaborador. E eu não estou falando só de cortar o acesso ao computador, mas de todos os outros serviços que o usuário utiliza no Microsoft 365: e-mail, Teams, OneDrive, licenças e por aí vai.

Você já deve ter passado pela situação de ter que desativar um usuário no Microsoft 365 e fazer isso manualmente: bloquear login, remover licenças, configurar resposta automática, redirecionar e-mails… Tudo isso toma tempo e, na maioria das vezes, envolve alguns passos que podem ser esquecidos.

E se eu te dissesse que dá pra automatizar tudo isso com um simples script em PowerShell?

O que o script vai fazer

Aqui está a magia: com um script simples, vamos:

E, claro, gerar um log local de tudo o que foi feito

  • Bloquear o login do usuário
  • Remover as licenças do Microsoft 365
  • Configurar a mensagem de ausência automática no Outlook
  • Redirecionar os e-mails para o gestor
  • Desabilitar o MFA (caso o colaborador tenha)

O Script para fazer isso

Aqui está o código que vai fazer todo o trabalho pesado:

param(
    [Parameter(Mandatory)]
    [string]$EmailUsuario,

    [Parameter(Mandatory)]
    [string]$EmailGestor
)

Connect-MgGraph -Scopes "User.ReadWrite.All", "Mail.ReadWrite", "Organization.Read.All"
Update-MgUser -UserId $EmailUsuario -AccountEnabled:$false
$usuario = Get-MgUser -UserId $EmailUsuario
$usuario.AssignedLicenses | ForEach-Object {
    Set-MgUserLicense -UserId $EmailUsuario -RemoveLicenses $_.SkuId -AddLicenses @()
}
#Aqui você pode colocar uma msg de ausencia 
$mensagem = "Este colaborador não faz mais parte da empresa. Em caso de urgência, contate $EmailGestor."
Set-MailboxAutoReplyConfiguration -Identity $EmailUsuario -AutoReplyState Enabled -InternalMessage $mensagem -ExternalMessage $mensagem

#Nessa parte aqui ta redirecionando para o gestor
Set-Mailbox -Identity $EmailUsuario -ForwardingSMTPAddress $EmailGestor -DeliverToMailboxAndForward $false

$authMethods = Get-MgUserAuthenticationMethod -UserId $EmailUsuario
foreach ($method in $authMethods) {
    Remove-MgUserAuthenticationMethod -UserId $EmailUsuario -AuthenticationMethodId $method.Id
}

#aqui fica o log, é sempre importante guardar logs rsrs
$log = "[{0}] Usuário $EmailUsuario desativado, e-mail redirecionado para $EmailGestor" -f (Get-Date)
Add-Content -Path "C:\Temp\Log_Desativacoes.txt" -Value $log

Write-Host "Processo de desativação concluído para $EmailUsuario"

Como usar

Basta salvar o script em um arquivo .ps1 (ex: Desativar-Usuario.ps1) e rodar com os parâmetros necessários:

.\Desativar-Usuario.ps1 -EmailUsuario "zeca@paulocostati.com.br" -EmailGestor "paulo@paulocostati.com.br"

O PowerShell vai realizar todas as etapas automaticamente. Simples assim.

E agora?

Você pode usar esse script de diversas formas:

  • CSV em lote: Se tiver vários usuários para desativar, pode criar um CSV com as informações e rodar o script para todos de uma vez.
  • Power Automate: Se quiser integrar com o fluxo de trabalho no Microsoft 365, pode disparar o script via Power Automate.
  • Ansible: Tem um ambiente mais complexo? Dá para rodar esse PowerShell automaticamente através de Ansible.

Conclusão

E aí, gostou da ideia de automatizar esse processo? O que antes poderia ser um trabalho manual e demorado, agora pode ser feito de forma rápida e sem erro com apenas um clique.

Esse é o tipo de automação que realmente faz a diferença no dia a dia da administração de TI.

O post Como Automatizar a Desativação de Usuários no Microsoft 365 com PowerShell apareceu primeiro em Paulo Costa TI - Expert Solutions Microsoft | MCSE | MCSA | MCT.

]]>
84