Script PowerShell: Descubra Novos Usuários no Active Directory
Apr 18, 2017
Quando novos funcionários entram para uma empresa, os técnicos de TI têm que criar suas contas no Active Directory. Posteriormente, o especialista em TI recepciona cada novo colaborador e os ajuda a fazer login no domínio. Neste artigo, vou mostrar como automatizar esse procedimento com a ajuda de scripts PowerShell. Sinta-se à vontade para editar este script conforme suas necessidades específicas.
Este post do blog cobre especificamente os três seguintes assuntos:
- Leia a senha do email como uma string segura, converta-a em uma string criptografada e salve-a em um arquivo de texto para que usuários normais não possam lê-la. Posteriormente, o script a lê e a reverte para um objeto de string segura a ser usado como credencial em cmdlets de mensagens de email subsequentes.
- Crie um script para identificar quaisquer novos usuários adicionados no AD nas últimas 24 horas e envie-lhes um e-mail de boas-vindas usando o servidor SMTP do Gmail.
- Agende o script para ser executado diariamente às 12:00 a.m. no Agendador de Tarefas com a ajuda do PowerShell.
Usei os seguintes cmdlets neste post; detalhes de cada cmdlet estão disponíveis no site do Technet.
- Read-Host (para ler a string segura de uma linha de comando como senhas de usuário do Gmail)
- Send-MailMessage (para enviar mensagens de email usando um servidor SMTP)
- Get-Date (para obter a data e hora atuais)
- Get-Content (para ler uma senha criptografada de um arquivo)
- Get-ADUser (para obter usuários recém-adicionados do AD)
- New-ScheduledTaskTrigger (para criar um novo gatilho de tarefa agendada)
- Register-ScheduledTask (para agendar a nova tarefa no Agendador de Tarefas)
Executei este script no Windows Server 2016. Você pode editá-lo de acordo com as necessidades do seu ambiente. Siga estes três passos para fazer tudo funcionar.
Passo 1. Salve sua senha do Gmail como uma string criptografada em um arquivo de texto
Abra o PowerShell com privilégios elevados e execute o seguinte cmdlet. Isso solicitará que você insira uma senha como uma string segura e salve-a em um arquivo de texto como uma string criptografada.
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File “C:Userssecurepassword.txt”
Passo 2. Salve o script em um arquivo com a extensão .ps1
Abra o Bloco de Notas e copie e cole o seguinte código. Salve o arquivo como FindOutADUsers.ps1.
##Beginning of functions
Function Send-Email {
Param ($Email, $Credential,$attachment)
$From = "karim.buzdar@gmail.com"
$subject = "Welcome to yourdomain.com"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
### Beginning of email body
$Body = "Dear User,<br><br>"
$Body += "Welcome to yourdomain.com <br><br>"
$Body += " This email will help you log in to your domain services. Follow these steps to log in to your domain: <br><br>"
$Body += "Step 1. Enter your username <br><br>"
$Body += "Step 2. Enter your password, and press enter <br><br>"
$Body += " Please check the attached screenshot. If you have any problems, please call the help desk at following number: <br><br>"
$Body += "<b>Extension No: 121</b><br><br>"
$Body += "Regards,<br><br>"
$Body += "Yourdomain.com Helpdesk"
### End of email body
Send-MailMessage -from $From -to $Email -Subject $subject -BodyAsHtml $Body -Attachments $attachment -SmtpServer $SMTPServer -Port $SMTPPort -Credential $Credential -UseSsl
}
### End of Functions
##### Beginning of main function
$When = ((Get-Date).AddDays(-1))
$UserName = "karim.buzdar@gmail.com" #Gmail username which is used for sending an email
$Password = Get-Content "C:UsersAdministrator.YOURDOMAINDesktopFindOutADUserssecurepassword.txt" | ConvertTo-SecureString #Reading a secure password from file and reversing it back into a secure string object
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($UserName, $Password) #PSCredential for send-mail message cmdlet
$Attachment = "C:UsersAdministrator.YOURDOMAINDesktopFindOutADUsersScreenshot.png" #Image sending as an attachment with email
foreach ($EmailAddress in Get-ADUser -filter {(whencreated -ge $When)} -Properties emailaddress | Select -ExpandProperty emailaddress) #Iterating over each email of users
{
Send-Email -Email $EmailAddress -Credential $Credential -attachment $Attachment
Write-Host "Email sent: $EmailAddress"
}
### End of main function
Etapa 3. Agende o Script Usando o Task Scheduler
No Bloco de Notas, crie um novo arquivo. Cole o seguinte script e salve-o com a extensão .ps1.
$Trigger= New-ScheduledTaskTrigger -At 12:00am -Daily #Trigger the task daily at 12 AM
$User= "yourdomainadministrator"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument
"C:UsersAdministrator.YOURDOMAINDesktopFindOutADUsersFindOutADUsers.ps1"
Register-ScheduledTask -TaskName "FindOutADUsers" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
Execute o script acima no PowerShell com privilégios elevados, e está feito!
Quando uma tarefa agendada é executada com sucesso, os usuários recém-adicionados no Active Directory receberão o seguinte e-mail:
Espero que esta publicação seja útil para você. Seu feedback e comentários são sempre bem-vindos, especialmente se algo não estiver funcionando neste script. Boa sorte!
Conteúdo relacionado selecionado:
- Como desativar contas de usuário inativas usando PowerShell
- Como criar usuários do AD em massa e enviar suas credenciais por e-mail usando PowerShell
- Como criar novos usuários do Active Directory com PowerShell
- Como exportar usuários específicos do Active Directory
- Como restaurar usuários do Active Directory
Compartilhar em
Saiba Mais
Sobre o autor
Karim Buzdar
Engenheiro de Suporte
Engenheiro de TI e Microsoft Certified Solutions Associate (MCSA) para Server Infrastructure. Como autor técnico, Karim concentra-se em Microsoft Directory Services e PowerShell.
Saiba mais sobre este assunto
Criar usuários do AD em massa e enviar suas credenciais por e-mail usando PowerShell
Como criar, alterar e testar senhas usando PowerShell
Como adicionar e remover grupos AD e objetos nos grupos com PowerShell
Confianças no Active Directory
Ataques de ransomware ao Active Directory