Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Centro de recursosBlog
Script PowerShell: Descubra Novos Usuários no Active Directory

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:

  1. 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.
  2. 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.
  3. 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.

  1. Read-Host (para ler a string segura de uma linha de comando como senhas de usuário do Gmail)
  2. Send-MailMessage (para enviar mensagens de email usando um servidor SMTP)
  3. Get-Date (para obter a data e hora atuais)
  4. Get-Content (para ler uma senha criptografada de um arquivo)
  5. Get-ADUser (para obter usuários recém-adicionados do AD)
  6. New-ScheduledTaskTrigger (para criar um novo gatilho de tarefa agendada)
  7. 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:

Image

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!

Compartilhar em

Saiba Mais

Sobre o autor

Asset Not Found

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.