Como bloquear, desbloquear, habilitar e desabilitar contas AD com PowerShell
Jul 30, 2018
As ferramentas de gerenciamento GUI do Active Directory, como o Active Directory Users and Computers (ADUC), são adequadas para realizar operações em contas individuais. Mas quando você precisa lidar com várias contas AD, PowerShell é uma ferramenta mais flexível. Neste post, vou mostrar como usar o PowerShell para bloquear, desbloquear, habilitar e desabilitar contas de usuários e computadores AD individualmente e em massa usando arquivos delimitados por vírgulas.
Antes de poder executar os cmdlets do PowerShell do Active Directory, você precisa ter o módulo do Active Directory para o PowerShell instalado no seu computador. Se estiver usando o Windows 10, baixe as Ferramentas de Administração de Servidor Remoto (RSAT) para Windows 10 do site da Microsoft aqui e depois instale-o. Em seguida, habilite o recurso do módulo AD PowerShell abrindo um prompt do PowerShell com privilégios de administrador local e executando o cmdlet Enable-WindowsOptionalFeature conforme mostrado aqui:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Opcionalmente, você também pode atualizar os arquivos de ajuda usando o cmdlet Update-Help:
Update-Help -Module ActiveDirectory -Verbose -Force
Certifique-se de fechar o prompt do PowerShell, pois você não precisará de privilégios elevados para mais nada. As instruções a seguir podem ser executadas no contexto de segurança de qualquer usuário que tenha permissões para realizar operações de conta de usuário no Active Directory, como desbloquear contas de usuário e ativar e desativar contas de usuário, computador e serviço.
Como encontrar contas bloqueadas no Active Directory
Você não pode bloquear contas do Active Directory usando PowerShell ou a GUI; de fato, não há razão para querer fazer isso. Mas você pode procurar por contas de usuário bloqueadas com a ajuda do cmdlet Search-ADAccount. Aqui eu encadeio os resultados do cmdlet Search-ADAccount ao cmdlet Select-Object para exibir apenas os atributos Name e SamAccountName de cada conta bloqueada:
Search-ADAccount -LockedOut -UsersOnly | Select-Object Name, SamAccountName
Como desbloquear contas do Active Directory
Você pode desbloquear facilmente contas de usuário usando o cmdlet Unlock-ADAccount. Use o parâmetro -Identity para especificar qual conta desbloquear; você pode fornecer seu nome distinto, identificador de segurança (SID), identificador único global (GUID) ou nome de conta do Gerenciador de Conta de Segurança (SAM). Aqui estou desbloqueando a conta de RussellS:
Unlock-ADAccount -Identity RussellS
Como habilitar contas do Active Directory
Se um objeto de conta foi desativado por qualquer motivo, você pode ativá-lo usando o cmdlet Enable-ADAccount:
Enable-ADAccount -Identity RussellS
Como desativar contas do Active Directory
Da mesma forma, o cmdlet Disable-ADAccount é usado para desativar contas AD:
Disable-ADAccount -Identity RussellS
Desativando usuários a partir de um arquivo CSV
Você também pode desativar todas as contas de usuário do Active Directory listadas em um arquivo de texto delimitado por vírgulas (.csv). O arquivo deve conter um cabeçalho e, em seguida, uma lista de nomes de usuário, um em cada linha. Meu arquivo CSV tem apenas uma coluna (com o cabeçalho “Name”), então meu arquivo delimitado por vírgulas não tem vírgulas! Se o seu arquivo CSV tiver mais de uma coluna, essas colunas adicionais serão simplesmente ignoradas pelo script.
Começo importando o conteúdo do arquivo CSV como um objeto ($users) e, em seguida, uso um loop ForEach para desativar o usuário em cada linha do arquivo de texto. Aqui está o script do PowerShell:
$users=Import-CSV c:tempusers.csv
ForEach ($user in $users)
{
Disable-ADAccount -Identity $($user.name)
}
Gerencie contas AD com Netwrix Directory Manager
Desativando contas de computador a partir de um arquivo CSV
O script do PowerShell para desativar contas de computador listadas em um arquivo CSV é quase idêntico. A principal diferença é que eu tenho que adicionar um cifrão ($) ao final do valor do parâmetro -Identity para designar que quero desativar um objeto de computador e não um objeto de conta de usuário. Eu também altero os nomes das variáveis e dos arquivos para serem mais apropriados para contas de computador.
Aqui está o script:
$computers=Import-CSV c:tempcomputers.csv
ForEach ($computer in $computers)
{
Disable-ADAccount -Identity "$($computer.name)$"
}
Para verificar os resultados, utilize o cmdlet Search-ADAccount:
Search-ADAccount –AccountDisabled –ComputersOnly | Select-Object Name, SamAccountName
Desativando usuários inativos
Os cmdlets Search-ADAccount e Disable-ADAccount podem ser usados juntos para desativar contas de usuários inativas. Vou dar dois exemplos. Primeiro, criarei um novo objeto de intervalo de tempo ($timespan) e definirei para noventa dias, e então usarei como valor do parâmetro -TimeSpan para desativar contas que não estiveram ativas nos últimos três meses. O parâmetro -AccountInactive exige que o nível funcional do domínio seja Windows Server 2003 ou superior.
$timespan = New-Timespan -Days 90
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | Disable-ADAccount
Outra opção é usar o parâmetro -DateTime para retornar contas que estão inativas desde uma data específica. Este script desativa todas as contas não ativas desde 3 de junho de 2018:
Search-ADAccount -UsersOnly -AccountInactive -DateTime ‘6/3/2018’ | Disable-ADAccount
É importante notar que devido à forma como o Active Directory sincroniza o atributo LastLogOnDate, os resultados obtidos ao especificar o parâmetro –AccountInactive com o cmdlet Search-ADAccount podem ser imprecisos por até 9–14 dias.
Como você pode ver, gerenciar o status das contas do Active Directory com o PowerShell é simples. Como o PowerShell é orientado a objetos, é fácil criar objetos que contenham os dados que você deseja processar e, em seguida, passá-los para outros cmdlets que realizam as ações necessárias.
Conteúdo relacionado selecionado:
Compartilhar em
Saiba Mais
Sobre o autor
Russell Smith
Consultor de TI
Consultor de TI e autor especializado em tecnologias de gestão e segurança. Russell tem mais de 15 anos de experiência em TI, escreveu um livro sobre segurança do Windows e coautorou um texto para a série Microsoft’s Official Academic Course (MOAC).
Saiba mais sobre este assunto
Leis de Privacidade de Dados por Estado: Abordagens Diferentes para a Proteção da Privacidade
Exemplo de Análise de Risco: Como Avaliar Riscos
O Triângulo da CIA e Sua Aplicação no Mundo Real
O que é Gerenciamento de Registros Eletrônicos?
Análise de Risco Quantitativa: Expectativa de Perda Anual