Powershell-Cmdlets
Alle Vorgänge, die mit den Verwaltungstools von Specops Password Reset durchgeführt werden können, können auch über Windows PowerShell ausgeführt werden.
Erste Schritte
Specops Password Reset enthält die folgenden Windows PowerShell-Cmdlets. Um zu beginnen, müssen Sie das Specops Password Reset PowerShell-Snapin registrieren.
- Starten Sie PowerShell.
- Registrieren Sie das Snapin mit dem folgenden Befehl:
Verwaltungs-Cmdlets
Für eine Liste aller Specops Password Reset Verwaltungs-Cmdlets in PowerShell verwenden Sie den folgenden Befehl:
Die Cmdlets, die zur Verwaltung von Specops Password Reset über PowerShell verwendet werden, sind:
- Get-PasswordResetSettings
- New-PasswordResetMailSettings
- New-PasswordResetOneTimePasswordSettings
- New-PasswordResetQuestionDefinition
- New-PasswordResetSecretQuestionsSettings
- New-PasswordResetSettings
- Disable-PasswordResetPolicy
- Remove-PasswordResetEnrollment
- Update-PasswordResetSettings
Die Cmdlets New- und Get-PasswordResetSettings verfügen beide über die Schalter -GpoName, -GpoGuid und -DomainName. Wenn der DomainName nicht angegeben ist, wird die Domäne verwendet, bei der der Benutzer derzeit angemeldet ist. Wenn Sie -GpoName verwenden, denken Sie daran, dass mehrere GPOs zurückgegeben werden können.
Hinweis
Die Cmdlets erstellen die Gruppenrichtlinienobjekte nicht für Sie. Die zu verwendenden GPOs müssen existieren und können über die Gruppenrichtlinien-Verwaltungskonsole (GPMC) erstellt und verknüpft werden.
Neues Password Reset Settings-Objekt für ein GPO erstellen
Dieses Beispiel zeigt Ihnen, wie Sie die anfänglichen Einstellungen für Specops Password Reset in einem GPO erstellen und speichern.
$prs = New-passwordresetsettings -gponame “My First Gpo”
$prs.SecretQuestionsSettings = $null
$prs | update-PasswordResetSettings
##Sie können auch einen Wert für SecretQuestionsSettings hinzufügen
Hinweis
Dies wird Specops Password Reset nicht für das ausgewählte GPO aktivieren. Um Specops Password Reset für ein GPO zu aktivieren, müssen Sie ein Einmal-Passwort-Einstellungsobjekt oder ein Secret Questions-Einstellungsobjekt zum Password Reset-Einstellungsobjekt hinzufügen.
Standardfragen hinzufügen
Dieses Beispiel zeigt Ihnen, wie Sie eine Standardfrage zu einem Password Reset-Einstellungsobjekt hinzufügen.
$prs = get-passwordresetsettings -GpoName “My First Gpo”
$question = New-passwordResetQuestionDefinition
-Question “meine neue Frage”
-MinLength 3
-Required
$prs.Questions.AddQuestionDefinition($question)
$prs | update-PasswordResetSettings
Lokalisierte Fragen hinzufügen
Dieses Beispiel zeigt Ihnen, wie Sie eine lokalisierte Frage zu einem Password Reset-Einstellungsobjekt hinzufügen.
$prs = get-passwordresetsettings -GpoName “My First Gpo”
$question = New-passwordResetQuestionDefinition
-Question “Wie lautet der Mädchenname Ihrer Mutter?”
-MinLength 3
-Required
$prs.Questions.AddQuestionDefinition($question)
$LocalizedQuestion = $question.GetLocalizedQuestion()
$LocalizedQuestion.Question = “vad är din mammas flicknamn?”
$prs.questions.AddLocalizedQuestion($LocalizedQuestion, “sv-SE” )
$prs | update-PasswordResetSettings
Secret Questions aktivieren
Dieses Beispiel zeigt Ihnen, wie Sie die Secret Questions-Einstellung aktivieren.
$prs = get-passwordResetSettings –GpoName “My First GPO”
$secretQuestionsSettings = new-PasswordResetSecretQuestionsSettings
-numberOfAllowedCustomQuestion 3
–NumberofQuestion 3
$prs.SecretQuestionsSettings = $secretQuestionsSettings
$prs | update-PasswordResetSettings
Secret Questions deaktivieren
Dieses Beispiel zeigt Ihnen, wie Sie die Secret Questions-Einstellung deaktivieren.
$prs = get-passwordresetSettings –gponame “My First Gpo”
$prs.SecretQuestionsSettings = $null
$prs | update-PasswordResetSettings
Mail-Einstellungen aktivieren
Dieses Beispiel zeigt Ihnen, wie Sie die standardmäßigen Mail-Einstellungen, die auf dem Server konfiguriert sind, überschreiben.
$prs = get-PasswordResetSettings –GpoName "My First Gpo"
$PasswordResetMailSettings = New-PasswordResetMailSettings
–smtpServer "ServerName.test.com"
-portnumber 25
$prs.MailSettings =$PasswordResetmailSettings
$prs | update-PasswordResetSettings
Auf standardmäßige Mail-Einstellungen zurücksetzen
Dieses Beispiel zeigt Ihnen, wie Sie zu den Mail-Einstellungen zurückkehren, die auf dem Server konfiguriert sind.
$prs = Get-PasswordResetSettings -Gponame “My First GPO”
$prs.MailSettings = $null
$prs | update-PasswordResetSettings
Einmal-Passwort aktivieren
Dieses Beispiel zeigt Ihnen, wie Sie Einmal-Passwörter konfigurieren.
$prs = get-PasswordResetSettings –gpoName “ My First Gpo”
$otp = New-PasswordResetOneTimePasswordSettings
–from “ServerName.test.com”
–to “test@test.qa”
–body “hier ist Ihr Einmal-Passwort : [=%code%=] “
$prs.MobileVerificationSettings = $otp
$prs | update-PasswordResetSettings
Einmal-Passwort deaktivieren
Dieses Beispiel zeigt Ihnen, wie Sie Einmal-Passwörter deaktivieren.
$prs = Get-PasswordResetSettings -Gponame “My First GPO”
$prs.MobileVerificationSettings = $null
$prs | update-PasswordResetSettings
Autoenrollment-Cmdlets
Wir empfehlen die Verwendung des normalen Registrierungsprozesses, bei dem jeder Endbenutzer eine Reihe von Fragen in Specops Password Reset beantwortet. Wenn dies jedoch nicht möglich ist, können Benutzer vom Administrator automatisch mit dem folgenden Cmdlet registriert werden:
- New-PasswordResetEnrollment
Um dieses Cmdlet zu verwenden, sind einige zusätzliche PowerShell-Skripte erforderlich.
Das Cmdlet New-PasswordResetEnrollment hat die folgenden erforderlichen Parameter:
- -userName – der Name des zu registrierenden Benutzers
- -questionsAndAnswers – eine Hashtabelle, die die Fragen und Antworten für den Benutzer enthält
Optional können die folgenden zwei Parameter verwendet werden, um:
- -serverName – der Name des Specops Password Reset-Servers
- -serverPort – der Port, der bei der Kommunikation mit dem Server verwendet wird
Wenn die beiden oben genannten Parameter weggelassen werden, werden sie aus der Registrierung gelesen. Auf einem Computer, auf dem die SPR-Admin-Tools installiert sind, sollten diese Werte in der Registrierung vorhanden sein.
Hinweis
Um das Cmdlet New-PasswordResetEnrollment verwenden zu können, muss der Benutzer, der den Aufruf durchführt, Mitglied der Sicherheitsgruppe Specops Password Enrollment Agents auf dem Specops Password Reset-Server sein. Wenn die Gruppe auf dem Server nicht existiert, muss sie erstellt werden.
Einen Benutzer automatisch registrieren
Um einen Benutzer mit fest codierten Werten zu registrieren:
New-PasswordResetEnrollment
-userName Bob
-questionsAndAnswers ([ordered] @ {'Wie lautet Ihr Name?'='Bob'; ' Wie lautet Ihre Sozialversicherungsnummer?'='12345'})
Benutzer mit einer CSV-Datei automatisch registrieren
Die für die Antworten verwendeten Informationen können beispielsweise aus einer Textdatei gesammelt werden. Das folgende Beispiel geht davon aus, dass eine CSV-Datei mit folgendem Inhalt verwendet wird:
User,SSN,ShoeSize Bob,12345,8 Karen,6789,6
Um diese Datei als Datenquelle für die Registrierung zu verwenden, könnte das folgende Skript verwendet werden:
foreach ($line in (Import-csv c:\temp\qaimport.csv)) {
$qa = [ordered]@{}
$qa.Add("Wie lautet Ihre Sozialversicherungsnummer?", $line.SSN)
$qa.Add("Wie groß ist Ihre Schuhgröße?", $line.ShoeSize)
New-PasswordResetEnrollment
-User $line.User
-QuestionsAndAnswers $qa
}
Benutzer mit Informationen im Active Directory automatisch registrieren
Um Daten zu verwenden, die im Active Directory-Objekt für jeden Benutzer gespeichert sind, könnte eine Funktion wie die folgende erstellt werden:
function EnrollUsers($ouPath) {
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.SearchRoot = (New-Object DirectoryServices.DirectoryEntry $ouPath)
$searcher.PageSize = 1000
$searcher.Filter = '(&(objectCategory=user)(userAccountControl:1.2.840.113556.1.4.803:=512))'
$searcher.PropertiesToLoad.Add('name') > $null
$searcher.PropertiesToLoad.Add('employeeNumber') > $null
$searcher.PropertiesToLoad.Add('department') > $null
$searcher.PropertiesToLoad.Add('division') > $null
$users = $searcher.FindAll();
foreach ($user in $users) {
$name = $user.Properties.name
$department = $user.Properties.department
$division = $user.Properties.division
if ($name -and $department -and $division) {
$qa = [ordered]@{}
$qa.Add("In welcher Abteilung arbeiten Sie?", $department)
$qa.Add("In welcher Division arbeiten Sie?", $division)
New-PasswordResetEnrollment
-userName $name
-questionsAndAnswers $qa
Write-Host 'Registriert' $name
} else {
Write-Host 'Registrierung fehlgeschlagen' $name
}
}
}
Die obige Funktion muss mit einem Parameter aufgerufen werden, der der LDAP-Pfad einer OU ist. Die Registrierung wird für alle Benutzer in der OU durchgeführt.