Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform
Ressourcen­zentrumBlog
PowerShell-Skript: Neue Benutzer in Active Directory entdecken

PowerShell-Skript: Neue Benutzer in Active Directory entdecken

Apr 18, 2017

Wenn neue Mitarbeiter einem Unternehmen beitreten, müssen IT-Techniker ihre Konten in Active Directory anlegen. Später begrüßt der IT-Spezialist jeden Neuling und hilft ihnen, sich im Domain anzumelden. In diesem Artikel zeige ich Ihnen, wie Sie dieses Verfahren mit Hilfe von PowerShell-Skripting automatisieren können. Fühlen Sie sich frei, dieses Skript nach Ihren speziellen Bedürfnissen zu bearbeiten.

Dieser Blogbeitrag behandelt speziell die folgenden drei Themen:

  1. Lesen Sie das E-Mail-Passwort als sicheren String, konvertieren Sie es in einen verschlüsselten String und speichern Sie es in einer Textdatei, sodass normale Benutzer es nicht lesen können. Später liest das Skript es und wandelt es zurück in ein sicheres String-Objekt, um als Anmeldeinformation in nachfolgenden E-Mail-Nachrichten-Cmdlets verwendet zu werden.
  2. Erstellen Sie ein Skript, um alle neuen Benutzer zu identifizieren, die innerhalb der letzten 24 Stunden in AD hinzugefügt wurden, und senden Sie ihnen eine Willkommens-E-Mail über den SMTP-Server von Gmail.
  3. Planen Sie das Skript so, dass es täglich um 12:00 Uhr nachts im Task Scheduler mit Hilfe von PowerShell ausgeführt wird.

Ich habe die folgenden Cmdlets in diesem Beitrag verwendet; Details zu jedem Cmdlet finden Sie auf der Technet-Website.

  1. Read-Host (zum Einlesen des sicheren Strings von der Kommandozeile als Gmail-Benutzerpasswörter)
  2. Send-MailMessage (zum Senden von E-Mail-Nachrichten über einen SMTP-Server)
  3. Get-Date (um das aktuelle Datum und die Uhrzeit zu erhalten)
  4. Get-Content (zum Lesen eines verschlüsselten Passworts aus einer Datei)
  5. Get-ADUser (um neu hinzugefügte Benutzer aus AD zu erhalten)
  6. New-ScheduledTaskTrigger (zum Erstellen eines neuen geplanten Aufgaben-Triggers)
  7. Register-ScheduledTask (zum Planen der neuen Aufgabe im Task Scheduler)

Ich habe dieses Skript auf Windows Server 2016 ausgeführt. Sie können es entsprechend den Anforderungen Ihrer Umgebung bearbeiten. Befolgen Sie diese drei Schritte, um alles zum Laufen zu bringen.


Schritt 1. Speichern Sie Ihr Gmail-Passwort als verschlüsselten String in einer Textdatei

Öffnen Sie PowerShell mit erhöhten Rechten und führen Sie das folgende Cmdlet aus. Dies fordert Sie auf, ein Passwort als sicheren String einzugeben und es als verschlüsselten String in einer Textdatei zu speichern.

      Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File “C:Userssecurepassword.txt”
      


Schritt 2. Speichern Sie das Skript in einer Datei mit der Endung .ps1

Öffnen Sie Notepad und kopieren Sie den folgenden Code hinein. Speichern Sie die Datei als 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
      


Schritt 3. Planen Sie das Skript mit dem Task Scheduler

Erstellen Sie in Notepad eine neue Datei. Fügen Sie das folgende Skript ein und speichern Sie es mit der Erweiterung .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
      

Führen Sie das obige Skript in PowerShell mit erhöhten Privilegien aus, und Sie sind fertig!

Wenn eine geplante Aufgabe erfolgreich ausgeführt wird, erhalten neu hinzugefügte Benutzer in Active Directory die folgende E-Mail:

Image

Ich hoffe, dass dieser Beitrag für Sie nützlich sein wird. Ihr Feedback und Ihre Kommentare sind immer willkommen, besonders wenn etwas in diesem Skript nicht funktioniert. Viel Glück!

Teilen auf

Erfahren Sie mehr

Über den Autor

Asset Not Found

Karim Buzdar

Support-Techniker

IT-Ingenieur und Microsoft Certified Solutions Associate (MCSA) für Serverinfrastruktur. Als technischer Autor konzentriert sich Karim auf Microsoft Directory Services und PowerShell.