Cómo crear una cuenta de usuario de Active Directory con powershell

19

Establezco constantemente entornos de investigación y desarrollo que requieren cuentas de directorio activo. Dado que ubicamos estos entornos en redes distribuidas, cada entorno necesita su propio directorio activo. ¿Cómo puedo crear una nueva cuenta de directorio activo usando powershell?

Rob Murdoch
fuente

Respuestas:

19

No estoy seguro de si está buscando un script que tome una lista de nombres, contraseñas, etc., pero el siguiente comando funciona para crear un nuevo usuario. UserPrincipalName es opcional. En este caso, no se usa el correo electrónico.

New-ADUser -SamAccountName nnn2 -Name "nnn2" -UserPrincipalName nnn2@jj -AccountPassword (ConvertTo-SecureString -AsPlainText "somePassword" -Force) -Enabled $true -PasswordNeverExpires $true -Path 'CN=Users,DC=jjdomain,DC=net'

Si desea crear un usuario en un dominio confiable, agregue -server dns.domain al comando anterior

sejong
fuente
1
Esto es específico de v2. Rob, ¿estás usando v1 o v2?
Doug Chase el
44
"PasswordNeverExpires $ true" !!!!!! :-)
pauska
Necesita el módulo PowerShell si no lo tiene:
northben
1
add-windowsfeature rsat-ad-powershell; ipmo activedirectory
northben
6

Recomendaría investigar los cmdlets AD de Quest:

http://www.quest.com/powershell/activeroles-server.aspx

Un nuevo usuario de AD sería:

new-QADUser -name 'user1' -ParentContainer 'OU=companyOU,DC=company,DC=com' -samAccountName 'user1' -UserPassword 'P@ssword'

Sin embargo, para Powershell 'puro', la sugerencia de Shay de los scripts de Idera le ahorraría el uso de cmdlets adicionales. Eso sí, si tiene que tomarse la molestia de descargar los scripts, también puede descargar los cmdlets de Quest.

fenster
fuente
5

Tomé la respuesta de Brad arriba y agregué un poco más de detalle a continuación (gracias Brad por hacerme pensar en esta dirección):

Entrada de archivo CSV:

cn,givenname,sn,sAMAccountName,displayname,UserPrincipalName
Joe Smith,Joe,Smith,jsmith,Joe Smith,jsmith@domain.com
Susan Johnson,Susan,Johnson,sjohnson,Susan Johnson,sjohnson@domain.com

Código:

$inputFile = Import-CSV  <insert filepath here>

foreach($line in $inputFile)
{
    ## need to add quotes around DSN        
    $dsn = "`"cn="+$line.cn+",ou=userou,dc=domain,dc=com`""
    $samid = $line.sAMAccountName
    $ln = $line.sn
    $fn = $line.givenname
    $dn = $line.displayname
    ## need to add quotes around display name
    $dn2 = "`"$dn`""
    $upn = $line.UserPrincipalName

    cmd /c "dsadd user $dsn -samid $samid -ln $ln -fn $fn -display $dn2
    -upn $upn -mustchpwd yes -pwd TempP@assw0rd"

    write-host `n
}    

¡Buena suerte!

Bobby T
fuente
2

si solo está configurando los mismos usuarios en diferentes redes / dominios, un simple archivo .cmd viejo debería ser el truco. Simplemente emita llamadas al comando dsadd para cada usuario.

una llamada a dsadd o dsmod también funcionaría en medio de un script de PowerShell. incluso podría tener un archivo CSV de nombre de usuario / contraseñas que podría importar con un script de PowerShell y recorrer cada línea con una llamada a dsadd o dsmod de esta manera:

$inputFile = Import-CSV  <insert filepath here>

foreach($line in $inputFile)
{
    dsadd user -samid $line.Username -pwd $line.Password
}

Los comandos ds (dsadd, dsmod, etc.) se instalan con el rol de directorio activo, por lo que están disponibles una vez que tiene AD funcionando.

brad.lane
fuente