Index du forum Systèmes d'exploitation et technologies Microsoft Windows Server Import csv depuis active directory

Import csv depuis active directory

Pour échanger et obtenir de l'aide sur les éditions Windows Server, c'est par ici !


Messages: 19
Voila la composition de mon fichier CSV, couplé avec ce code, qui marche tres bien, y'a une fenêtre qui s'ouvre sur powershell me demandant de mettre un mdp, et ce mdp est valable pour les users contenues dans le fichier, grace à la commande AccountPassword (Read-Host -AsSecureString "AccountPassword")


Le fichier CSV;
Name;GivenName;Surname;SamAccountName;UserPrincipalName
Walter WHITE,Walter;WHITE,wwhite;wwhite@test.com




(Import-Csv C:\Users\Desktop\new-users.csv -Delimiter ’;’) | New-ADUser -Path ‘OU=Courrier,OU=Courrier,DC=toto,DC=lan’ -AccountPassword (Read-Host -AsSecureString "AccountPassword") -PassThru | Enable-ADAccount

Publicité
 


Messages: 5
Salut Solidus,

J'ai vu ton message dans l'autre sujet.

Pour ta demande, la suggestion que je pourrai te donner est de créer une colonne "Password" dans le fichier CSV.

Par contre, il faudra légèrement modifié ton script. On pourrait transformer ton script comme ceci :

$listeUsers = Import-Csv C:\Users\Desktop\new-users.csv -Delimiter ’;’ ==> je déclare d'abord une variable pour récupérer le contenu du CSV

Ensuite, je manipule cette variable "$listeUsers" avec une boucle ForEach... (voir ci-dessous)

foreach ($user in $listeUsers) { New-ADUser -Path ‘OU=Courrier,OU=Courrier,DC=toto,DC=lan’ -Name $user.Name -GivenName $user.GivenName -Surname $user.Surname -SamAccountName $user.SamAccountName -AccountPassword (ConvertTo-SecureString -AsPlainText (echo $user.Password) -Force) -PassThru | Enable-ADAccount }

En gros, je lui dis : "Pour chaque user dans la liste (chaque ligne du CSV), crée moi l'utilisateur avec son nom, prénom,etc... et son password (crypté) puis actives le !!"

La commande "echo $user.Password", c'est pour forcer Powershell à me retourner la chaîne de caractères du mot de passe.

J'ai testé ce script sur un controleur de domaine AD dans une VM ==> ça a fonctionné ! Les mots de passes que j'ai utilisé sont du style "Azerty01$","Azerty02$", etc...


Peut qu'il y a une solution plus simple mais je ne la connais pas ...


Messages: 19
Merci bcp pour ton aide mais ca ne marche tjr pas, et j'ai bien rajouté la colonne Password sur mon CSV
Comment faire cohabiter le import csv et le code que tu m'as donné ?

Mon CSV
Name;GivenName;Surname;SamAccountName;UserPrincipalName;Password
Walter WHITE,Walter;WHITE,wwhite;wwhite@test.com,S@lida13


Le SamAccountName est le login des user (ici wwhite)


Ci dessous mon code que tu as modifié, j'ai fais un copier coller de mon code sur Powershell ISE

$listeUsers = Import-Csv C:\Users\Desktop\new-users.csv -Delimiter ’;’ foreach ($user in $listeUsers) { New-ADUser -Path ‘OU=Cou,OU=to,DC=to,DC=lan’ -Name $user.Name -GivenName $user.GivenName -Surname $user.Surname -SamAccountName $user.SamAccountName -AccountPassword (ConvertTo-SecureString -AsPlainText (echo $user.Password) -Force) -PassThru | Enable-ADAccount }




Jeton « in » inattendu dans une expression ou une instruction.
At line:1 char:89

Jeton « listeUsers » inattendu dans une expression ou une instruction.
At line:1 char:9



:( Je suis perdu je sais plus quoi faire.........

Je peux te contacter en privé stp ? je peux te fournir le fichier CSV pour être le plus complet possible.


Messages: 19
J'ai refait un autre test

$listeUsers = Import-Csv C:\Users\Desktop\new-users.csv -Delimiter ’;’
foreach ($user in $listeUsers) { New-ADUser -Path ‘OU=Courrier,OU=to,DC=to,DC=lan’ -Name $user.Name -GivenName $user.GivenName -Surname $user.Surname -SamAccountName $user.SamAccountName -AccountPassword (ConvertTo-SecureString -AsPlainText (echo $user.Password) -Force) -PassThru | Enable-ADAccount }




Import-Csv : Impossible de traiter l'argument, car la valeur de l'argument « name » n'est pas valide. Modifiez la valeur de l'argument « name » et réexécute
z l'opération.
Au niveau de ligne : 1 Caractère : 25
+ $listeUsers = Import-Csv <<<< C:\Users\Desktop\new-users.csv -Delimiter ’;’
+ CategoryInfo : InvalidArgument: (:) [Import-Csv], PSArgumentException
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.ImportCsvCommand

ConvertTo-SecureString : Impossible de lier l'argument au paramètre « String », car il a la valeur Null.
Au niveau de ligne : 2 Caractère : 230
+ foreach ($user in $listeUsers) { New-ADUser -Path ‘OU=Courrier,OU=to,DC=to,DC=lan’ -Name $user.Name -GivenName $user.GivenName -Surname $user.Surname -S
amAccountName $user.SamAccountName -AccountPassword (ConvertTo-SecureString <<<< -AsPlainText (echo $user.Password) -Force) -PassThru | Enable-ADAccount }
+ CategoryInfo : InvalidData: (:) [ConvertTo-SecureString], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand


Messages: 5
Salut !


Je viens de reprendre le taf. Je ne suis pas toujours dispo.


Je crois que j'ai rencontré le même problème que toi. Ce sont les virgules qui posent problème dans ton fichier CSV.

Dans ton fichier d'exemple, tu as mis ceci :

Name;GivenName;Surname;SamAccountName;UserPrincipalName;Password
Walter WHITE,Walter;WHITE,wwhite;wwhite@test.com,S@lida13


Il faudrait plutôt mettre ceci (que des points-virgule entre chaque champ) :

Name;GivenName;Surname;SamAccountName;UserPrincipalName;Password
Walter WHITE;Walter;WHITE;wwhite;wwhite@test.com;S@lida13


Concernant l'erreur avec Import-Csv, essaies de mettre l'option "-Path" devant "C:\Users\Desktop\new-users.csv". Peut être que ça passera mieux avec Powershell 2.0 ...

A+


Messages: 19
CA MARCHE

IT WORKS !



Grosso modo c’était tout con le problème et tu m'as mis la puce à l'oreille, quand j'ajoutais la colonne Password sur mon CSV, je l'ajoutais directement en ouvrant le fichier CSV ( qui ressemble à Excel ) et du coup j'ajoutais une colonne password, et ca ne marchait pas.

Et là, j'ai fais clic droit sur le CSV, "modifier" et là je me retrouve avec le fichier en mode texte et j'ai juste ajouté un ;Password et ca a marché !


Merci encore à Dubonk et à tous ceux qui ont posté sur ce sujet.


Messages: 19
Je remonte encore le sujet.

Est ce que c'est possible, toujours avec un import CSV, de pouvoir ajouter des listes de diffusions et groupes d'un User déjà existant ?

Grosso modo dans ma boite, quand on cree des new users, on copie la liste de diffusion et groupes d'un user déjà existant et on fait coller sur les nouveaux, car il y'a énormément de liste de diffusion et groupes.

Si je pouvais automatiser ca ce serait parfait.


J'ai trouvé ce script, il fonctionne parfaitement, en gros je met un user source et un user cible, par contre je ne sais pas comment l’implémenter dans mon script pour pouvoir tout copier de mon user source à mon fichier CSV pour les new users

Get-ADUser -Identity usersource -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members usercible


Messages: 5
Salut Solidus,



A mon avis, il faudrait inclure cette ligne de commande dans la boucle "Foreach" que tu exécutes pour créer les users en rajoutant le login (samAccountName) en tant que membre du groupe concerné.

D'après ce que je comprends dans ta ligne de commande, tu récupères la liste des groupes AD de "usersource" ( Get-ADUser -Identity usersource -Properties memberof | Select-Object -ExpandProperty memberof) auxquels tu rajoutes "usercible" en tant que membre ( | Add-ADGroupMember -Members usercible ).

Ton script final devrait ressembler à ceci (à peu près...) :

$listeUsers = Import-Csv C:\Users\Desktop\new-users.csv -Delimiter ’;’
foreach ($user in $listeUsers)
{
New-ADUser -Path ‘OU=Courrier,OU=to,DC=to,DC=lan’ -Name $user.Name -GivenName $user.GivenName -Surname $user.Surname -SamAccountName $user.SamAccountName -AccountPassword (ConvertTo-SecureString -AsPlainText (echo $user.Password) -Force) -PassThru | Enable-ADAccount

Get-ADUser -Identity "login de ton usersource" -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $user.SamAccountName

}



à tester ...


Messages: 19
Ca marche dubonk merci !

Précédente

Retourner vers Windows Server