Al crear nuevas cuentas de usuario en Active Directory, un administrador establece una contraseña inicial única para cada cuenta y se la indica a un usuario (generalmente, en el primer inicio de sesión, se solicita al usuario que cambie esta contraseña mediante la opción "El usuario debe cambiar la contraseña en el próximo inicio de sesión”Del atributo AD userAccountControl). Si no desea inventar una nueva contraseña aleatoria para cada usuario o está utilizando un script de PowerShell para crear cuentas de AD, puede generar contraseñas únicas automáticamente usando un script de PowerShell simple.

Para generar una contraseña, puede utilizar el Generar contraseña método del Membresía.Sistema.Web.Seguridad clase de .NET. Generemos una contraseña aleatoria segura usando los siguientes comandos de PowerShell:

# Import System.Web assembly
Add-Type -AssemblyName System.Web
# Generate random password
[System.Web.Security.Membership]::GeneratePassword(8,2)

El método GeneratePassword permite generar una contraseña de hasta 128 caracteres. El método utiliza dos parámetros iniciales: la longitud de la contraseña (8 caracteres en mi caso) y el número mínimo de caracteres especiales no alfabéticos o no numéricos, como !, -, $, &, @, #, %, etc(2 caracteres especiales). Como puede ver, de acuerdo con estos argumentos se me ha generado la siguiente contraseña: QX.9ogy:

No se recomienda utilizar más de uno o dos caracteres especiales en la contraseña de un usuario, de lo contrario, un usuario no podrá escribirla sin errores (como k};E^]$|).

Por lo tanto, si crea nuevos usuarios con el cmdlet New-ADUser PowerShell y desea establecer contraseñas únicas para ellos, use los siguientes comandos:

Add-Type -AssemblyName System.Web
New-ADUser -Name "Jeremy Irons" -GivenName "Jeremy" -Surname "Irons" -SamAccountName "jirons" -UserPrincipalName "[email protected]" -Path "OU=Users,OU=Glasgow,OU=UK,DC=woshub,DC=com" –AccountPassword ([System.Web.Security.Membership]::GeneratePassword(8,2)) -ChangePasswordAtLogon $true -Enabled $true

Si su empresa utiliza una política de contraseña segura, en algunos casos, una contraseña generada con el Generar contraseña Es posible que este método no cumpla con los requisitos de la política de contraseñas de dominio de AD. Antes de establecer una contraseña para un usuario, puede asegurarse de que cumpla con la política de complejidad de contraseñas. Por supuesto, no tiene sentido verificar su longitud y la presencia de un nombre de usuario en una contraseña. Puede comprobar si la contraseña cumple al menos con 3 requisitos de la "La clave debe cumplir los requerimientos de complejidad" política (la contraseña debe contener al menos 3 tipos de caracteres de la siguiente lista: números, minúscula caracteres, MAYÚSCULAS personajes, y especial caracteres). Si la verificación de la contraseña falla, tendrá que volver a generarla.

Escribí un pequeño script de PowerShell que genera una nueva contraseña aleatoria y verifica si cumple con el requisito de complejidad de la contraseña:

Function GenerateStrongPassword ([Parameter(Mandatory=$true)][int]$PasswordLenght)
{
Add-Type -AssemblyName System.Web
$PassComplexCheck = $false
do {
$newPassword=[System.Web.Security.Membership]::GeneratePassword($PasswordLenght,1)
If ( ($newPassword -cmatch "[A-Zp{Lu}s]") `
-and ($newPassword -cmatch "[a-zp{Ll}s]") `
-and ($newPassword -match "[d]") `
-and ($newPassword -match "[^w]")
)
{
$PassComplexCheck=$True
}
} While ($PassComplexCheck -eq $false)
return $newPassword
}

Para generar una contraseña que tenga 5 caracteres y al menos un carácter especial, ejecute este comando:

GenerateStrongPassword (5)

Este script siempre creará una contraseña que cumpla con su política de complejidad de contraseñas de AD.

Recomendado para ti