Zum Inhalt
IAM für das KI-Zeitalter

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.

  1. Starten Sie PowerShell.
  2. Registrieren Sie das Snapin mit dem folgenden Befehl:
Add-PSSnapin Specopssoft.SpecopsPasswordReset

Verwaltungs-Cmdlets

Für eine Liste aller Specops Password Reset Verwaltungs-Cmdlets in PowerShell verwenden Sie den folgenden Befehl:

Get-command -noun passwordreset*

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.

EnrollUsers 'LDAP://OU=SomeSprDudes,DC=acme,DC=com'