Flash info

"Problems cannot be solved by the same level of thinking that created them."

- Albert Einstein
 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
como10
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Script modification attributs utilisateurs AD depu - 15/04/18 15:51 Bonjour,

Je souhaites faire un script qui me permettrais de modifier les attributs d'utilisateurs présent dans mon AD et en remplaçant les attributs par ceux qui sont indiqués dans mon fichier CSV. J'ai regardé sur internet et je trouve pleins de façon de faire. Par conséquent j'ai créé un script ci dessous qui ne me retourne aucune erreur mais qui ne modifie pas les champs voulus sur mon utilisateurs.

Code:

 Import-Module ActiveDirectory   $users Import-Csv -Path C:\users\administrateur\Desktop\Modif_users.csv -delimiter ";"                foreach ($user in $users) {             Get-ADUser -Filter "SamAccountName -like '$($user.samaccountname)'"` -Properties * -SearchBase "chemin de l'OU ou se trouvent les utilisateurs" |               Set-ADUser -Company $($user.Company) `   -Department $($user.Department) `   -Description $($user.Description) `   -office $($user.office) ` }




Je ne comprends pas ou se situe le problème. Avez vous des indications à me donner ?

Merci d'avance
  | | L'administrateur a désactivé l'accés public en écriture.
Whitatrax
Utilisateur

PowerShelleur Débutant
Messages: 26
graphgraph
Karma: 3  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 08:29 Bonjour,

Je suis également un débutant en powershell, ce n'est pas forcément la bonne réponse, mais ça peut être une piste :

Pour le Set-AdUser, utilisez -replace pour modifier les champs AD voulus

Exemple :
Code:

  foreach ($user in $users)  { Get-ADUser -Filter "SamAccountName -like '$($user.samaccountname)'"` -Properties * -SearchBase "chemin de l'OU ou se trouvent les utilisateurs" | Set-Aduser -replace @{Company="$user.Company";Department="$user.Department";Description="$user.Description";Office=" $user.Office} }

  | | L'administrateur a désactivé l'accés public en écriture.
como10
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 09:30 Merci pour ton aide Whitatrax

En fait je crois que j'ai trouvé mon problème en fait je créé les script sur ISE et j'ai mis une ` après -office $($user.office) en trop.

ta solution est certainement aussi fonctionnelle car visiblement il existe plusieurs façon de faire des modifications d'utilisateurs dans l'AD.

Après je ne sais pas s'il y a une solution meilleurs qu'une autre.
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1539
graphgraph
Karma: 112  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 10:36 salut como10 et Whitatrax
bienvenue à vous

Après je ne sais pas s'il y a une solution meilleurs qu'une autre. vos deux solution fonctionne, bien que celle de Whitatrax est plus compliquer mais indispensable pour des attributs non prevue dans Set-ADUser
mais ce n'est pas le cas ici

pour ton script como10, souvent les problèmes viennent du contenu des fichiers CSV
assure toi que la premiere ligne contienne les nom de colonne utilisé comme propriété dans ton script (samaccountname, Company, Department, etc...) et qu'il soit bien séparer par des points virgules comme tu l'indique dans le délimiteur !

ceci dis il n'y a pas que ça :
'ai créé un script ci dessous qui ne me retourne aucune erreur mais qui ne modifie pas les champs voulus sur mon utilisateurs
ça indique souvant qu'il n'execute pas le Set-ADUser
normal le filtre n'est pas bon !! "SamAccountName -like '$($user.samaccountname)'"
les apostrophes empêche la convertion de la variable $user.samaccountname en valeur (login du l'utilisateur)
il te faut remplacer les apostrophes par des guillemets et bien sur les guillemets déjà present par autre chose, des accolades !
{SamAccountName -like "$($user.samaccountname)"}
pour info -Properties * est completement inutile ici et ralentie le fonctionnement du script, en plus de charger le serveur !

au final ton code devrais ressembler a ceci :
Code:

 foreach ($user in $users) {                 Get-ADUser -Filter {SamAccountName -like "$($user.samaccountname)"} -SearchBase "chemin de l'OU ou se trouvent les utilisateurs" |                     Set-ADUser -Company $($user.Company) -Department $($user.Department) -Description $($user.Description) -Office $($user.office)     }



Message édité par: 6ratgus, à: 17/04/18 11:37

Message édité par: 6ratgus, à: 17/04/18 11:38
  | | L'administrateur a désactivé l'accés public en écriture.
como10
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 11:12 Merci 6ratgus pour ta réponse effectivement cela marche bien mieux.
Par contre je voulais inclure aussi une vérification que le samaccoutname existe bien dans mon AD avant de tenter la modification.
En effet je viens de faire un test en integrant un compte qui n'existe pas dans mon csv et il ne me retourne pas d'erreur. Est-ce normal ?

Comment puis je intégrer un contrôle préalable à la modification d'un utilisateur.

j'ai fait ceci:

Import-Module ActiveDirectory

Code:

 $csvfile "C:\users\administrateur\Desktop\Modif_users.csv" $users Import-Csv -Path $csvfile -delimiter ";"                          foreach ($user in $users) { $usersearch Get-ADUser -Filter {SamAccountName -like "$($user.samaccountname)"} -SearchBase "chemin de l'OU"           if ($usersearch -eq $null) {   write-host "l'utilisateur "$user.samaccountname" n'existe pas"    }   else {       Set-ADUser -Company $($user.Company) `   -Department $($user.Department) `   -Description $($user.Description) `   -office $($user.office) Write-Host "Compte modifié pour "$user.samaccountname"" } }



Mais cela ne marche pas

il doit y avoir des erreur de syntaxes et de méthode j'imagine. Peux tu m'eclairer.

Comme tu peux le voir je débutes en powershell !!

Merci pour la réponse sur developpez.com

Message édité par: como10, à: 17/04/18 14:03
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1539
graphgraph
Karma: 112  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 15:31 Comment puis je intégrer un contrôle préalable à la modification d'un utilisateur.c'est exactement ce que tu a fais

Code:

 $usersearch Get-ADUser -Filter {SamAccountName -eq "aaaaaa"# ce login existe pas j'espère ! $usersearch -eq $null # renvoie True


comme tu le vois quand le compte n'existe pas get-aduer renvoie $null

par contre une petite amelioration, tu peut changer le like du filtre par un eq


En effet je viens de faire un test en integrant un compte qui n'existe pas dans mon csv et il ne me retourne pas d'erreur. Est-ce normal ?c'est l'intérêt d'utilisé le filtre dans get-aduser, pour ne pas avoir de message d'erreur si l'utilisateur n'existe pas
par contre il faut le géré comme tu la fais

Mais cela ne marche pas
il doit y avoir des erreur de syntaxes et de méthode j'imagine. Peux tu m'eclairer.
comme je ne vois aucune erreur dans ton script, je sais pas quoi te dire

si tu simplifie ton script pour les tests tu devrais vois le bon resultat :
Code:

 $users "como10""aaaaaa" mettre un compte qui existe et un qui n'existe pas  foreach ($user in $users) {     $usersearch = Get-ADUser -Filter {SamAccountName -eq $user}     if ($usersearch -eq $null) {         write-host "l'utilisateur $user n'existe pas"          }       else {             Write-Host "Compte modifié pour $user"         }     } # resultat : # Compte modifié pour como10 # l'utilisateur aaaaaa n'existe pas



Message édité par: 6ratgus, à: 17/04/18 16:33
  | | L'administrateur a désactivé l'accés public en écriture.
como10
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 15:56 Merci pour ta réponse donc je ne suis pas si loin que cela. J'ai corrigé mon code en conséquence. Le voici ci dessous. J'ai testé avec en évitant mon csv et en mettant 1 utilisateur qui existe et l'autre qui n'existe pas:

Code:

 Import-Module ActiveDirectory #$users = Import-Csv -Path C:\users\administrateur\Desktop\Modif_users.csv -delimiter ";" $users "test.test""tutu.tutu"                          foreach ($user in $users) { $usersearch Get-ADUser -Filter {SamAccountName -eq "$($user.samaccountname)"}           if (@($usersearch -eq $null).count-eq 0) {   write-host "l'utilisateur "$user" n'existe pas" -ForegroundColor Red   }   else {       Set-ADUser -Company $($user.Company) `   -Department $($user.Department) `   -Description $($user.Description) `   -office $($user.office) Write-Host "Compte modifié pour"$user"" -ForegroundColor green } }



Par contre il ne fait pas le script il me demande:

Code:

 applet de commande Set-ADUser à la position 1 du pipeline de la commande Fournissez des valeurs pour les paramètres suivants : Identity 



on dirait qu'il attend que je lui donne les "samaccountname" qui sont déclarés dans la variable $users (a la place du csv)

As tu une idée du pourquoi ?
  | | L'administrateur a désactivé l'accés public en écriture.
6ratgus
Utilisateur

PowerShelleur Platinum
Messages: 1539
graphgraph
Karma: 112  
Re:Script modification attributs utilisateurs AD depu - 17/04/18 17:19 je suis bête
j'ai corriger mon script de test par reflex sans te le dire

il faut a set-aduser les donné de l'utilisateur !!

Code:

 $usersearch Set-ADUser -Company $($user.Company) ` ....



Message édité par: 6ratgus, à: 17/04/18 18:20
  | | L'administrateur a désactivé l'accés public en écriture.
como10
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Script modification attributs utilisateurs AD depu - 18/04/18 08:03 Bon désolé d'encore solliciter ton aide 6ratgus mais ca ne fonctionne pas correctement
J'ai fait le test comme tu l'as indiqué sans le csv et en modifiant quelques lignes et cela fonctionne.
Maintenant quand je prend le csv on dirait que le Get-Aduser n'est pas fait et donc la variable est null et me renvoie que les utilisateurs n'existent pas.

Code:

 Import-Module ActiveDirectory $users Import-Csv -Path C:\users\administrateur.LPO\Desktop\Modif_users.csv -delimiter ";" #$users = "test.test", "tutu.tutu"                          foreach ($user in $users) { $usersearch Get-ADUser -Filter {SamAccountName -eq "$($user.samaccountname)" }           if ($usersearch -eq $null) {   write-host "l'utilisateur "$user.samaccountname" n'existe pas" -ForegroundColor Red   }   else {       $usersearch Set-ADUser -Company $($user.Company) `   -Department $($user.Department) `   -Description $($user.Description) `   -office $($user.office) Write-Host "Compte modifié pour"$user.samaccountname"" -ForegroundColor green }

}

Vois tu ou se situe l'erreur ? je pense que c'est le get-aduser qui doit avoir un problème de syntax ?
  | | L'administrateur a désactivé l'accés public en écriture.
como10
Utilisateur

PowerShelleur Débutant
Messages: 16
graphgraph
Karma: 0  
Re:Script modification attributs utilisateurs AD depu - 18/04/18 15:04 je crois que j'ai trouvé la solution ci dessous en cherchant sur internet:

Code:

 Import-Module ActiveDirectory $users Import-Csv -Path C:\users\administrateur\Desktop\Modif_users.csv -delimiter ";"                       foreach ($user in $users) { $usersearch Get-ADUser -Filter "samaccountname -eq '$($user.samAccountName)'"           if ($usersearch -eq $null) {   write-host "l'utilisateur "$user.samaccountname" n'existe pas" -ForegroundColor Red   }   else {       $usersearch Set-ADUser -Company $($user.Company) `   -Department $($user.Department) `   -Description $($user.Description) `   -office $($user.office) Write-Host "Compte modifié pour"$user.samaccountname"" -ForegroundColor green } }



cela semble fonctionner avec le csv. Par contre je ne comprend pas la syntax du "samaccountname -eq '$($user.samAccountName)'". Si tu peux me l'expliquer pour les prochaines fois
  | | L'administrateur a désactivé l'accés public en écriture.
© 2018 PowerShell-Scripting.com