Compartilhar via

Bloquear e desbloquear contas de usuários automaticamente no AD

Anônima
2024-01-22T11:52:48+00:00

Bom dia,

Preciso bloquear e desbloquear as contas de usuários quando saem de férias.

Gostaria de saber se existe como automatizar isso no windows server 2016 standart.

Windows para empresas | Windows Server | Serviços de diretório | Active Directory

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

10 respostas

Classificar por: Mais útil
  1. Anônima
    2024-01-23T06:05:33+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Oi Ronaldo,

    Sim, você pode automatizar o processo de bloqueio e desbloqueio de contas de usuário no Active Directory usando scripts do PowerShell. Aqui está um script de exemplo que você pode modificar para atender às suas necessidades:

    Para bloquear uma conta de usuário:

    '''

    Módulo de importação do ActiveDirectory

    $User = Get-ADUser -Identity "nome de usuário"

    Set-ADAccountExpiration -Identity $User -DateTime ((Get-Date). AddDays(-1)) -Verbose

    '''

    Para desbloquear uma conta de usuário:

    '''

    Módulo de importação do ActiveDirectory

    $User = Get-ADUser -Identity "nome de usuário"

    Set-ADAccountExpiration -Identity $User -DateTime $null -Verbose

    '''

    Você pode agendar esses scripts para serem executados automaticamente usando o Agendador de Tarefas do Windows. Espero ter ajudado! Deixe-me saber se você tiver mais alguma dúvida.

    Atenciosamente

    Qiuyang

    Esta resposta foi útil?

    1 pessoa achou esta resposta útil.
    0 comentários Sem comentários
  2. Anônima
    2024-01-24T15:03:46+00:00

    Boa tarde

    tentei usar o script e apresentou o seguinte erro:

    então alterei o script para:

    Módulo de importação do ActiveDirectory

    Import-Module ActiveDirectory

    Lista de pares usuário-data de bloqueio

    $UsersAndBlockDates = @(

    @{ Username = "primo.rico"; BlockDate = Get-Date -Year 2024 -Month 01 -Day 25 }, 
    
    @{ Username = "bill.gates"; BlockDate = Get-Date -Year 2024 -Month 02 -Day 26 }, 
    

    )

    Lista de pares usuário-data de desbloqueio

    $UsersAndUnlockDates = @(

    @{ Username = "primo.rico"; UnlockDate = Get-Date -Year 2024 -Month 01 -Day 27 }, 
    
    @{ Username = "bill.gates"; UnlockDate = Get-Date -Year 2024 -Month 01 -Day 27 }, 
    

    )

    Função para bloquear um usuário

    function Block-User($Username, $BlockDate) {

    Disable-ADAccount -Identity $Username -Verbose 
    
    Start-Sleep -Seconds 5 
    
    Write-Host "$Username está bloqueado em ${BlockDate}: $($BlockDate -eq $true)" 
    

    }

    Função para desbloquear um usuário

    function Unblock-User($Username, $UnlockDate) {

    Enable-ADAccount -Identity $Username -Verbose 
    
    Start-Sleep -Seconds 5 
    
    Write-Host "$Username está desbloqueado em ${UnlockDate}: $($UnlockDate -eq $true)" 
    

    }

    Bloquear usuários

    foreach ($UserAndBlockDate in $UsersAndBlockDates) {

    Block-User -Username $UserAndBlockDate.Username -BlockDate $UserAndBlockDate.BlockDate 
    

    }

    Desbloquear usuários

    foreach ($UserAndUnlockDate in $UsersAndUnlockDates) {

    Unblock-User -Username $UserAndUnlockDate.Username -UnlockDate $UserAndUnlockDate.UnlockDate 
    

    }

    e agora aparece o seguinte erro:

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2024-01-24T11:21:44+00:00

    Ok, obrigado pelas repostas vou começar a fazer uso do script.

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2024-01-24T07:27:08+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Oi Ronaldo,

    Sim, esse script usa o PowerShell e o módulo ActiveDirectory para bloquear e desbloquear contas de usuário com base nas datas especificadas. O script cria duas matrizes, uma para bloquear usuários e outra para desbloqueá-los. Em seguida, ele define duas funções, uma para bloquear um usuário e outra para desbloquear um usuário. Finalmente, o script faz um loop pelas matrizes e chama a função apropriada para cada usuário. O script também inclui etapas de verificação para garantir que os usuários tenham sido bloqueados e desbloqueados corretamente.

    Atenciosamente

    Qiuyang

    Esta resposta foi útil?

    0 comentários Sem comentários
  5. Anônima
    2024-01-23T17:23:34+00:00

    Obrigado por me responder.

    Com base no que me falou, isso bloquearia e desbloquearia as conta de usuários quando eu precisasse?

    Módulo de importação do ActiveDirectory

    Import-Module ActiveDirectory

    Lista de pares usuário-data de bloqueio

    $UsersAndBlockDates = @(

    @{ Username = "jose.couves"; BlockDate = Get-Date -Year 2024 -Month 01 -Day 25 }, 
    
    @{ Username = "maria.maças"; BlockDate = Get-Date -Year 2024 -Month 02 -Day 10 }, 
    
    @{ Username = "joao.abacaxis"; BlockDate = Get-Date -Year 2024 -Month 03 -Day 15 } 
    

    )

    Lista de pares usuário-data de desbloqueio

    $UsersAndUnlockDates = @(

    @{ Username = "jose.couves"; UnlockDate = Get-Date -Year 2024 -Month 02 -Day 25 }, 
    
    @{ Username = "maria.maças"; UnlockDate = Get-Date -Year 2024 -Month 03 -Day 10 }, 
    
    @{ Username = "joao.abacaxis"; UnlockDate = Get-Date -Year 2024 -Month 04 -Day 15 } 
    

    )

    Função para bloquear um usuário

    function Block-User($Username, $BlockDate) {

    $User = Get-ADUser -Identity $Username 
    
    Set-ADAccountExpiration -Identity $User -DateTime $BlockDate -Verbose 
    
    Start-Sleep -Seconds 5 
    

    }

    Função para desbloquear um usuário

    function Unblock-User($Username, $UnlockDate) {

    $User = Get-ADUser -Identity $Username 
    
    Set-ADAccountExpiration -Identity $User -DateTime $UnlockDate -Verbose 
    
    Start-Sleep -Seconds 5 
    

    }

    Bloquear usuários

    foreach ($UserAndBlockDate in $UsersAndBlockDates) {

    Block-User -Username $UserAndBlockDate.Username -BlockDate $UserAndBlockDate.BlockDate 
    

    }

    Desbloquear usuários

    foreach ($UserAndUnlockDate in $UsersAndUnlockDates) {

    Unblock-User -Username $UserAndUnlockDate.Username -UnlockDate $UserAndUnlockDate.UnlockDate 
    

    }

    Verificar se os usuários foram bloqueados e desbloqueados corretamente

    foreach ($UserAndBlockDate in $UsersAndBlockDates) {

    $Username = $UserAndBlockDate.Username 
    
    $BlockDate = $UserAndBlockDate.BlockDate 
    
    $User = Get-ADUser -Identity $Username 
    
    Write-Host "$Username está bloqueado em $BlockDate: $($User.AccountExpirationDate -eq $BlockDate)" 
    

    }

    foreach ($UserAndUnlockDate in $UsersAndUnlockDates) {

    $Username = $UserAndUnlockDate.Username 
    
    $UnlockDate = $UserAndUnlockDate.UnlockDate 
    
    $User = Get-ADUser -Identity $Username 
    
    Write-Host "$Username está desbloqueado em $UnlockDate: $($User.AccountExpirationDate -eq $UnlockDate)" 
    

    }

    Esta resposta foi útil?

    0 comentários Sem comentários