Question [Résolu] Script modification attributs AD

Plus d'informations
il y a 7 ans 11 mois #25322 par gaudefroy
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:1]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
}
}[/code:1]

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

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

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 ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 11 mois #25323 par Philippe
je suis bête :blush:
j'ai corriger mon script de test par reflex sans te le dire

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

[code:1]$usersearch | Set-ADUser -Company $($user.Company) ` ....[/code:1]<br><br>Message édité par: 6ratgus, à: 17/04/18 18:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 11 mois #25324 par gaudefroy
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:1]Import-Module ActiveDirectory

$users = Import-Csv -Path C:\users\administrateur.LPO\Desktop\Modif_users.csv -delimiter \&quot;;\&quot;

#$users = \&quot;test.test\&quot;, \&quot;tutu.tutu\&quot;


foreach ($user in $users) {

$usersearch = Get-ADUser -Filter {SamAccountName -eq \&quot;$($user.samaccountname)\&quot; }

if ($usersearch -eq $null) {
write-host \&quot;l'utilisateur \&quot;$user.samaccountname\&quot; n'existe pas\&quot; -ForegroundColor Red

}
else {
$usersearch | Set-ADUser -Company $($user.Company) `
-Department $($user.Department) `
-Description $($user.Description) `
-office $($user.office)
Write-Host \&quot;Compte modifié pour\&quot;$user.samaccountname\&quot;\&quot; -ForegroundColor green
}
[/code:1]}

Vois tu ou se situe l'erreur ? je pense que c'est le get-aduser qui doit avoir un problème de syntax ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 11 mois #25325 par gaudefroy
je crois que j'ai trouvé la solution ci dessous en cherchant sur internet:

[code:1]Import-Module ActiveDirectory

$users = Import-Csv -Path C:\users\administrateur\Desktop\Modif_users.csv -delimiter \&quot;;\&quot;

foreach ($user in $users) {

$usersearch = Get-ADUser -Filter \&quot;samaccountname -eq '$($user.samAccountName)'\&quot;

if ($usersearch -eq $null) {
write-host \&quot;l'utilisateur \&quot;$user.samaccountname\&quot; n'existe pas\&quot; -ForegroundColor Red

}
else {
$usersearch | Set-ADUser -Company $($user.Company) `
-Department $($user.Department) `
-Description $($user.Description) `
-office $($user.office)
Write-Host \&quot;Compte modifié pour\&quot;$user.samaccountname\&quot;\&quot; -ForegroundColor green
}
}[/code:1]

cela semble fonctionner avec le csv. Par contre je ne comprend pas la syntax du \&quot;samaccountname -eq '$($user.samAccountName)'\&quot;. Si tu peux me l'expliquer pour les prochaines fois :-)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 10 mois #28871 par gaudefroy
Excusez moi mais je déterre ce sujet pour une question complémentaire.
En effet je me sers de ce script pour modifier en masse mes utilisateurs mais lorsque dans mon csv certains champs sont nulles ou vide j'ai un message d'erreur.
Comment peut on adapter ce script pour que lorsque les champs sont vides, le script ne modifie rien et passe à l'utilisateur suivant.
Peut etre auriez vous des idées de syntax.
J'ai vue sur certains sites quelques solutions mais je ne comprends pas le concept.

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 10 mois #28873 par Philippe
salut como10

En effet je me sers de ce script pour modifier en masse mes utilisateurs mais lorsque dans mon csv certains champs sont nulles ou vide j'ai un message d'erreur.

il te suffit de mettre un filtre sur des valeurs null ou vide
au moment de la lecture du fichier par exemple
ou dans la boucle si tu veux
rien n'est fixe, tu fais au plus simple et au plus lisible pour une relecture plus tard pour une evolution ou correction

par exemple :

pour une ligne completement vide :

[code:1]... import-csv ... | where {$_ -ne \&quot;\&quot;}[/code:1]

pour une ligne avec une valeur vide ou null, le samaccountname du fichier par exemple :

[code:1]... import-csv ... | where {$_.samaccountname -ne \&quot;\&quot; -and $_.samaccountname -ne $null}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.092 secondes
Propulsé par Kunena