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:
- 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.
- 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.
- 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.
- Read-Host (zum Einlesen des sicheren Strings von der Kommandozeile als Gmail-Benutzerpasswörter)
- Send-MailMessage (zum Senden von E-Mail-Nachrichten über einen SMTP-Server)
- Get-Date (um das aktuelle Datum und die Uhrzeit zu erhalten)
- Get-Content (zum Lesen eines verschlüsselten Passworts aus einer Datei)
- Get-ADUser (um neu hinzugefügte Benutzer aus AD zu erhalten)
- New-ScheduledTaskTrigger (zum Erstellen eines neuen geplanten Aufgaben-Triggers)
- 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:
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!
Ausgewählte verwandte Inhalte:
- Wie man inaktive Benutzerkonten mit PowerShell deaktiviert
- Wie man AD-Benutzer in Massen erstellt und ihre Anmeldeinformationen per PowerShell verschickt
- Wie man neue Active Directory-Benutzer mit PowerShell erstellt
- Wie man spezifische Benutzer aus Active Directory exportiert
- Wie man Active Directory-Benutzer wiederherstellt
Teilen auf
Erfahren Sie mehr
Über den Autor
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.
Erfahren Sie mehr zu diesem Thema
Erstellen Sie AD-Benutzer in Massen und senden Sie deren Anmeldeinformationen per E-Mail mit PowerShell
Wie man Passwörter mit PowerShell erstellt, ändert und testet
So fügen Sie AD-Gruppen hinzu und entfernen Objekte in Gruppen mit PowerShell
Vertrauensstellungen in Active Directory
Ransomware-Angriffe auf Active Directory