Configurar Horário de Logon no Active Directory via PowerShell

Horário de Logon no ADDS via PowerShell

Neste tutorial vamos mostrar como criar um script que permite ajustar o horário de logon do AD para diversos usuários de uma só vez, poupando muito tempo de configuração do administrador.

Vamos usar um modelo (template) para o horário de logon, o que significa que teremos um usuário de teste de logon “teste01” já com o horário de logon desejado pré-configurado, e usaremos as informações desse usuário como modelo para os demais usuários que receberão a restrição de horários.

Nosso usuário atual de teste possui a seguinte configuração de horário de logon:

Horário de Logon no Windows Server 2012 ADDS

Neste modelo, o usuário não pode se logar aos sábados e domingos, e durante a semana o logon só é permitido entre as 08:00 e as 19:00, sendo negado nos demais horários.

Queremos aplicar essa mesma configuração a uma grupo de outros usuários sem ter de ajustar um por vez. Para isso usaremos um script do PowerShell associado a uma lista de usuários salva em um arquivo de texto. Vou chamar esse arquivo de “usuários.txt“, e salvá-lo no diretório raiz (C:\).

O arquivo usuários.txt deve conter os nomes de logon dos usuários que serão configurados, um por linha, como no exemplo:

Horário de logon - Bloco de Notas - Windows Server 2012

Vamos ao script em si:

Comandos do script

Digite os comandos no Windows PowerShell ISE, executando-o como Administrador:

1 – Se necessário, importe o módulo do Windows PowerShell:

Import-Module ActiveDirectory -ErrorAction SilentlyContinue

2 – Vamos criar um array para armazenar os horários de logon configurados em nosso usuário de teste (teste01) que serão atribuídos aos demais usuários:

[array]$horaLogon = (Get-ADUser teste01 -Properties logonHours).logonHours

3 – Agora vamos ler o arquivo de texto que contém os nomes dos demais usuários que receberão os horários de logon, iterar sobre cada usuário e atribuir as configurações presentes no array $horaLogon (você deve estar o mesmo diretório onde o arquivo de usuários foi salvo, ou então fornecer o caminho completo até ele no comando):

foreach ($user in Get-Content C:\usuários.txt) { 
Get-ADUser -Identity $user | Set-ADUser -Add @{logonhours=$horaLogon} 
}

Veja o script completo e pronto para ser executado no PowerShell ISE:

PowerShell ISE - Script de horário de logon

Agora basta executar o script e verificar se o horário de logon foi alterado corretamente para os usuários listados no arquivo.

Observação: Caso o horário de logon já esteja configurado para os usuários, você deve substituir a opção -Add do comando por -Replace, ficando assim:

foreach ($user in Get-Content C:\usuários.txt) { 
Get-ADUser -Identity $user | Set-ADUser -Replace @{logonhours=$horaLogon} 
}

No próximo tutorial vamos explicar como funciona internamente o horário de logon no Active Directory, o que permitirá efetuar configurações mais avançadas, como ajustar manualmente cada horário e criar scripts mais específicos e flexíveis.

Sobre Fábio dos Reis (1194 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

1 Comentário em Configurar Horário de Logon no Active Directory via PowerShell

  1. David Okonski // 18/06/2021 em 10:01 // Responder

    Esse artigo me ajudou bastante! Porém, no meu caso precisei alterar o parâmetro -Properties para o singular -Property.

    Ficando:

    Import-Module ActiveDirectory -ErrorAction SilentlyContinue
    [array]$horaLogon = (Get-ADUser teste -property logonHours).logonHours
    foreach ($user in Get-Content C:\scripts\users.txt) {
    Get-ADUser -Identity $user | Set-ADUser -Replace @{logonhours=$horaLogon}
    }

Escreva um comentário

Seu e-mail não será divulgado


*