Comment créer un compte d'utilisateur Active Directory avec PowerShell

19

Je mets constamment en place des environnements de recherche et développement qui nécessitent des comptes Active Directory. Puisque nous plaçons ces environnements dans des réseaux isolés, chaque environnement a besoin de son propre répertoire actif. Comment puis-je créer un nouveau compte Active Directory à l'aide de PowerShell.

Rob Murdoch
la source

Réponses:

19

Je ne sais pas si vous recherchez un script qui prendra une liste de noms, mots de passe, etc., mais la commande suivante fonctionne pour créer un nouvel utilisateur. UserPrincipalName est facultatif. Dans ce cas, l'e-mail n'est pas utilisé.

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 vous souhaitez créer un utilisateur dans un domaine approuvé, ajoutez -server dns.domain à la commande ci-dessus

sejong
la source
1
Ceci est spécifique à la v2. Rob, utilisez-vous v1 ou v2?
Doug Chase
4
"PasswordNeverExpires $ true" !!!!!! :-)
pauska
Vous avez besoin du module PowerShell si vous ne l'avez pas:
northben
1
add-windowsfeature rsat-ad-powershell; ipmo activedirectory
northben
6

Je recommanderais d'étudier les applets de commande AD de Quest:

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

Un nouvel utilisateur AD serait:

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

Cependant, pour Powershell «pur», la suggestion de Shay des scripts d'Idera vous sauverait en utilisant des applets de commande supplémentaires. Attention, si vous voulez vous lancer dans le téléchargement des scripts, vous pouvez aussi bien télécharger les applets de commande Quest.

fenster
la source
5

J'ai pris la réponse de Brad ci-dessus et ajouté un peu plus de détails ci-dessous (merci Brad de m'avoir fait réfléchir dans cette direction):

Fichier CSV d'entrée:

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

Code:

$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
}    

Bonne chance!

Bobby T
la source
2

si vous configurez simplement les mêmes utilisateurs sur différents réseaux / domaines, un vieux fichier .cmd simple devrait faire l'affaire. Émettez simplement des appels à la commande dsadd pour chaque utilisateur.

un appel à dsadd ou dsmod fonctionnerait également au milieu d'un script PowerShell. vous pouvez même avoir un fichier CSV de nom d'utilisateur / mots de passe que vous pouvez importer avec un script powershell et parcourir chaque ligne avec un appel à dsadd ou dsmod comme ceci:

$inputFile = Import-CSV  <insert filepath here>

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

Les commandes ds (dsadd, dsmod, etc.) sont installées avec le rôle Active Directory, elles sont donc disponibles une fois que AD est opérationnel.

brad.lane
la source