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:
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:
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:
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.
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}
}