Cmdlets PowerShell
Toutes les opérations pouvant être effectuées à l'aide des outils d'administration Specops Password Reset peuvent également être effectuées depuis Windows PowerShell.
Commencer
Specops Password Reset inclut les cmdlets Windows PowerShell suivants. Pour commencer, vous devrez enregistrer le snapin Specops Password Reset Powershell.
- Démarrez PowerShell.
- Enregistrez le snapin en utilisant la commande suivante:
Cmdlets d'administration
Pour obtenir une liste de tous les cmdlets d'administration Specops Password Reset depuis Powershell, utilisez la commande suivante:
Les cmdlets utilisés pour administrer Specops Password Reset depuis PowerShell sont:
- Get-PasswordResetSettings
- New-PasswordResetMailSettings
- New-PasswordResetOneTimePasswordSettings
- New-PasswordResetQuestionDefinition
- New-PasswordResetSecretQuestionsSettings
- New-PasswordResetSettings
- Disable-PasswordResetPolicy
- Remove-PasswordResetEnrollment
- Update-PasswordResetSettings
Les cmdlets New- et Get-PasswordResetSettings ont tous deux les commutateurs -GpoName, -GpoGuid et -DomainName. Si le DomainName n'est pas spécifié, le domaine où l'utilisateur est actuellement connecté sera utilisé. Si vous utilisez le -GpoName, rappelez-vous que plusieurs GPO peuvent être retournés.
Remarque
Les cmdlets ne créeront pas les objets de stratégie de groupe pour vous. Les GPO à utiliser doivent exister et peuvent être créés et liés depuis la console de gestion des stratégies de groupe (GPMC).
Créer un nouvel objet de paramètres Password Reset pour un GPO
Cet exemple vous montre comment créer et stocker les paramètres initiaux pour Specops Password Reset dans un GPO.
$prs = New-passwordresetsettings -gponame “My First Gpo”
$prs.SecretQuestionsSettings = $null
$prs | update-PasswordResetSettings
##Vous pouvez également ajouter une valeur pour SecretQuestionsSettings
Remarque
Cela n'activera pas Specops Password Reset pour le GPO sélectionné. Pour activer Specops Password Reset pour un GPO, vous devez ajouter un objet de paramètres de mot de passe à usage unique ou un objet de paramètres de questions secrètes à l'objet de paramètres de réinitialisation de mot de passe.
Ajouter des questions par défaut
Cet exemple vous montre comment ajouter une question par défaut à un objet de paramètres de réinitialisation de mot de passe.
$prs = get-passwordresetsettings -GpoName “My First Gpo”
$question = New-passwordResetQuestionDefinition
-Question “ma nouvelle question”
-MinLength 3
-Required
$prs.Questions.AddQuestionDefinition($question)
$prs | update-PasswordResetSettings
Ajouter des questions localisées
Cet exemple vous montre comment ajouter une question localisée à un objet de paramètres de réinitialisation de mot de passe.
$prs = get-passwordresetsettings -GpoName “My First Gpo”
$question = New-passwordResetQuestionDefinition
-Question “Quel est le nom de jeune fille de votre mère ?”
-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
Activer les questions secrètes
Cet exemple vous montre comment activer le paramètre des questions secrètes.
$prs = get-passwordResetSettings –GpoName “My First GPO”
$secretQuestionsSettings = new-PasswordResetSecretQuestionsSettings
-numberOfAllowedCustomQuestion 3
–NumberofQuestion 3
$prs.SecretQuestionsSettings = $secretQuestionsSettings
$prs | update-PasswordResetSettings
Désactiver les questions secrètes
Cet exemple vous montre comment désactiver le paramètre des questions secrètes.
$prs = get-passwordresetSettings –gponame “My First Gpo”
$prs.SecretQuestionsSettings = $null
$prs | update-PasswordResetSettings
Activer les paramètres de messagerie
Cet exemple vous montre comment remplacer les paramètres de messagerie par défaut qui sont configurés sur le serveur.
$prs = get-PasswordResetSettings –GpoName "My First Gpo"
$PasswordResetMailSettings = New-PasswordResetMailSettings
–smtpServer "ServerName.test.com"
-portnumber 25
$prs.MailSettings =$PasswordResetmailSettings
$prs | update-PasswordResetSettings
Revenir aux paramètres de messagerie par défaut
Cet exemple vous montre comment revenir aux paramètres de messagerie qui sont configurés sur le serveur.
$prs = Get-PasswordResetSettings -Gponame “My First GPO”
$prs.MailSettings = $null
$prs | update-PasswordResetSettings
Activer le mot de passe à usage unique
Cet exemple vous montre comment configurer des mots de passe à usage unique.
$prs = get-PasswordResetSettings –gpoName “ My First Gpo”
$otp = New-PasswordResetOneTimePasswordSettings
–from “ServerName.test.com”
–to “test@test.qa”
–body “voici votre mot de passe à usage unique: [=%code%=] “
$prs.MobileVerificationSettings = $otp
$prs | update-PasswordResetSettings
Désactiver le mot de passe à usage unique
Cet exemple vous montre comment désactiver les mots de passe à usage unique.
$prs = Get-PasswordResetSettings -Gponame “My First GPO”
$prs.MobileVerificationSettings = $null
$prs | update-PasswordResetSettings
Cmdlets d'auto-inscription
Nous recommandons d'utiliser le processus d'inscription normal, chaque utilisateur final répondant à un certain nombre de questions, dans Specops Password Reset. Cependant, si cela ne peut pas être fait, les utilisateurs peuvent être automatiquement inscrits par l'administrateur avec le cmdlet suivant:
- New-PasswordResetEnrollment
Pour utiliser ce cmdlet, un script PowerShell supplémentaire est requis.
Le New-PasswordResetEnrollment a les paramètres requis suivants:
- -userName – le nom de l'utilisateur à inscrire
- -questionsAndAnswers – une table de hachage contenant les questions et réponses pour l'utilisateur
Optionnellement, les deux paramètres suivants peuvent être utilisés pour:
- -serverName – le nom du serveur Specops Password Reset
- -serverPort – le port utilisé lors de la communication avec le serveur
Si les deux paramètres ci-dessus sont omis, ils seront lus à partir du registre. Sur un ordinateur où les outils d'administration SPR ont été installés, ces valeurs devraient être présentes dans le registre.
Remarque
Pour utiliser le cmdlet New-PasswordResetEnrollment, l'utilisateur effectuant l'appel doit être membre du groupe de sécurité Specops Password Enrollment Agents sur le serveur Specops Password Reset. Si le groupe n'existe pas sur le serveur, il doit être créé.
Auto-inscrire un utilisateur
Pour inscrire un utilisateur avec des valeurs codées en dur:
New-PasswordResetEnrollment
-userName Bob
-questionsAndAnswers ([ordered] @ {'Quel est votre nom?'='Bob'; ' Quel est votre numéro de sécurité sociale?'='12345'})
Auto-inscrire des utilisateurs en utilisant un fichier CSV
Les informations utilisées pour les réponses peuvent par exemple être collectées à partir d'un fichier texte. L'exemple suivant suppose qu'un fichier csv avec le contenu suivant est utilisé:
User,SSN,ShoeSize Bob,12345,8 Karen,6789,6
Pour utiliser ce fichier comme source de données pour l'inscription, le script suivant pourrait être utilisé:
foreach ($line in (Import-csv c:\temp\qaimport.csv)) {
$qa = [ordered]@{}
$qa.Add("Quel est votre numéro de sécurité sociale?", $line.SSN)
$qa.Add("Quelle est votre pointure?", $line.ShoeSize)
New-PasswordResetEnrollment
-User $line.User
-QuestionsAndAnswers $qa
}
Auto-inscrire des utilisateurs en utilisant des informations dans Active Directory
Pour utiliser les données stockées sur l'objet Active Directory pour chaque utilisateur, une fonction comme la suivante pourrait être créée:
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("Dans quel département travaillez-vous?", $department)
$qa.Add("Dans quelle division travaillez-vous?", $division)
New-PasswordResetEnrollment
-userName $name
-questionsAndAnswers $qa
Write-Host 'Inscrit' $name
} else {
Write-Host 'Échec de l'inscription' $name
}
}
}
La fonction ci-dessus doit être appelée avec un paramètre qui est le chemin LDAP d'une OU. L'inscription sera effectuée sur tous les utilisateurs de l'OU.