Cmdlets de Powershell
Todas las operaciones que se pueden realizar utilizando las herramientas de administración de Specops Password Reset también se pueden realizar desde Windows PowerShell.
Introducción
Specops Password Reset incluye los siguientes cmdlets de Windows PowerShell. Para comenzar, necesitarás registrar el complemento de Specops Password Reset en Powershell.
- Inicia PowerShell.
- Registra el complemento utilizando el siguiente comando:
Cmdlets de administración
Para obtener una lista de todos los cmdlets de administración de Specops Password Reset desde Powershell, utiliza el siguiente comando:
Los cmdlets que se utilizan para administrar Specops Password Reset desde PowerShell son:
- Get-PasswordResetSettings
- New-PasswordResetMailSettings
- New-PasswordResetOneTimePasswordSettings
- New-PasswordResetQuestionDefinition
- New-PasswordResetSecretQuestionsSettings
- New-PasswordResetSettings
- Disable-PasswordResetPolicy
- Remove-PasswordResetEnrollment
- Update-PasswordResetSettings
Los cmdlets New- y Get-PasswordResetSettings tienen los interruptores -GpoName, -GpoGuid y -DomainName. Si no se especifica el DomainName, se utilizará el dominio donde el usuario está actualmente conectado. Si utilizas -GpoName, recuerda que se pueden devolver múltiples GPOs.
Nota
Los cmdlets no crearán los Objetos de Política de Grupo por ti. Los GPOs que se utilizarán deben existir y pueden ser creados y vinculados desde la Consola de Administración de Políticas de Grupo (GPMC).
Crear un nuevo objeto de configuración de Password Reset para un GPO
Este ejemplo te muestra cómo crear y almacenar la configuración inicial para Specops Password Reset en un GPO.
$prs = New-passwordresetsettings -gponame “My First Gpo”
$prs.SecretQuestionsSettings = $null
$prs | update-PasswordResetSettings
##También puedes agregar un valor para SecretQuestionsSettings
Nota
Esto no habilitará Specops Password Reset para el GPO seleccionado. Para habilitar Specops Password Reset para un GPO, debes agregar un objeto de configuración de contraseña de un solo uso o un objeto de configuración de Preguntas Secretas al objeto de configuración de password reset.
Agregar preguntas predeterminadas
Este ejemplo te muestra cómo agregar una pregunta predeterminada a un objeto de configuración de password reset.
$prs = get-passwordresetsettings -GpoName “My First Gpo”
$question = New-passwordResetQuestionDefinition
-Question “my new question”
-MinLength 3
-Required
$prs.Questions.AddQuestionDefinition($question)
$prs | update-PasswordResetSettings
Agregar preguntas localizadas
Este ejemplo te muestra cómo agregar una pregunta localizada a un objeto de configuración de password reset.
$prs = get-passwordresetsettings -GpoName “My First Gpo”
$question = New-passwordResetQuestionDefinition
-Question “What is your mothers maiden name?”
-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
Habilitar Preguntas Secretas
Este ejemplo te muestra cómo habilitar la configuración de Preguntas Secretas.
$prs = get-passwordResetSettings –GpoName “My First GPO”
$secretQuestionsSettings = new-PasswordResetSecretQuestionsSettings
-numberOfAllowedCustomQuestion 3
–NumberofQuestion 3
$prs.SecretQuestionsSettings = $secretQuestionsSettings
$prs | update-PasswordResetSettings
Deshabilitar Preguntas Secretas
Este ejemplo te muestra cómo deshabilitar la configuración de Preguntas Secretas.
$prs = get-passwordresetSettings –gponame “My First Gpo”
$prs.SecretQuestionsSettings = $null
$prs | update-PasswordResetSettings
Habilitar configuración de correo
Este ejemplo te muestra cómo sobrescribir la configuración de correo predeterminada que está configurada en el servidor.
$prs = get-PasswordResetSettings –GpoName "My First Gpo"
$PasswordResetMailSettings = New-PasswordResetMailSettings
–smtpServer "ServerName.test.com"
-portnumber 25
$prs.MailSettings =$PasswordResetmailSettings
$prs | update-PasswordResetSettings
Revertir a la configuración de correo predeterminada
Este ejemplo te muestra cómo revertir a la configuración de correo que está configurada en el servidor.
$prs = Get-PasswordResetSettings -Gponame “My First GPO”
$prs.MailSettings = $null
$prs | update-PasswordResetSettings
Habilitar contraseña de un solo uso
Este ejemplo te muestra cómo configurar contraseñas de un solo uso.
$prs = get-PasswordResetSettings –gpoName “ My First Gpo”
$otp = New-PasswordResetOneTimePasswordSettings
–from “ServerName.test.com”
–to “test@test.qa”
–body “here is your one time password : [=%code%=] “
$prs.MobileVerificationSettings = $otp
$prs | update-PasswordResetSettings
Deshabilitar contraseña de un solo uso
Este ejemplo te muestra cómo deshabilitar contraseñas de un solo uso.
$prs = Get-PasswordResetSettings -Gponame “My First GPO”
$prs.MobileVerificationSettings = $null
$prs | update-PasswordResetSettings
Cmdlets de autoinscripción
Recomendamos utilizar el proceso de inscripción normal, haciendo que cada usuario final responda a una serie de preguntas en Specops Password Reset. Sin embargo, si esto no se puede hacer, los usuarios pueden ser inscritos automáticamente por el administrador con el siguiente cmdlet:
- New-PasswordResetEnrollment
Para utilizar este cmdlet se requiere algo de scripting adicional en PowerShell.
El New-PasswordResetEnrollment tiene los siguientes parámetros requeridos:
- -userName – el nombre del usuario a inscribir
- -questionsAndAnswers – una tabla hash que contiene las preguntas y respuestas para el usuario
Opcionalmente, se pueden utilizar los siguientes dos parámetros para:
- -serverName – el nombre del servidor de Specops Password Reset
- -serverPort – el puerto utilizado al comunicarse con el servidor
Si se omiten los dos parámetros anteriores, se leerán del registro. En una computadora donde se hayan instalado las herramientas de administración de SPR, estos valores deberían estar presentes en el registro.
Nota
Para utilizar el cmdlet New-PasswordResetEnrollment, el usuario que realiza la llamada debe ser miembro del grupo de seguridad Specops Password Enrollment Agents en el servidor de Specops Password Reset. Si el grupo no existe en el servidor, debe ser creado.
Autoinscribir un usuario
Para inscribir a un usuario con valores codificados:
New-PasswordResetEnrollment
-userName Bob
-questionsAndAnswers ([ordered] @ {'What is your name?'='Bob'; ' What is your social security number?'='12345'})
Autoinscribir usuarios utilizando un archivo CSV
La información utilizada para las respuestas puede, por ejemplo, ser recopilada de un archivo de texto. El siguiente ejemplo asume que se utiliza un archivo csv con el siguiente contenido:
User,SSN,ShoeSize Bob,12345,8 Karen,6789,6
Para utilizar este archivo como fuente de datos para la inscripción, se podría utilizar el siguiente script:
foreach ($line in (Import-csv c:\temp\qaimport.csv)) {
$qa = [ordered]@{}
$qa.Add("What is your social security number?", $line.SSN)
$qa.Add("What is your shoe size?", $line.ShoeSize)
New-PasswordResetEnrollment
-User $line.User
-QuestionsAndAnswers $qa
}
Autoinscribir usuarios utilizando información en Active Directory
Para utilizar datos que están almacenados en el objeto de Active Directory para cada usuario, se podría crear una función como la siguiente:
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 which department do you work?", $department)
$qa.Add("In which division do you work?", $division)
New-PasswordResetEnrollment
-userName $name
-questionsAndAnswers $qa
Write-Host 'Enrolled' $name
} else {
Write-Host 'Failed to enroll' $name
}
}
}
La función anterior necesita ser llamada con un parámetro que es la ruta LDAP de una OU. La inscripción se realizará en todos los usuarios de la OU.