Question
Modifier un champs AD sur plusieurs utilisateurs A
- Angevin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 11 ans 11 mois #17381
par Angevin Christophe
Bonjour à toutes et à tous.
J'inaugure ma première demande d'aide en PowerShell.
Je pense ne pas être loin du but mais je me noie malgré tout. Je viens donc solliciter votre aide.
Mon premier besoin :
changer le champs MailNickName d'un utilisateur donné
La commande suivante correspond bien à ce que je cherche :
$user = Get-ADUser TOTO -Properties mailNickName
$user.mailNickName = \"Le nickname à renseigner\"
Set-ADUser -instance $user
Jusqu'ici cela fonctionne bien.
A côté de cela, j'exécute la commande suivante pour obtenir en CSV un ensemble d'utilisateurs avec quelques attributs AD
Get-ADUser -Filter * -Property * | Select Name,SamAccountName,MailNickName,CanonicalName,DistinguishedName,UserPrincipalName,Enabled,LastLogonDate | Export-CSV \"d:\userADGL-22042014.csv\"
Maintenant, je souhaite appliquer le même mailNickName sur X utilisateurs. Ces X utilisateurs proviennent de mon fichiers CSV (je ne garde que quelques lignes de ce CSV pour ne pas le faire sur tout le monde).
Je pense pour cela mettre ma première commande dans une boucle foreach {}
$fichierCSV = Import-Csv \"D:\userADGL-22042014.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
Et là, je ne sais pas du tout comment comment intégrer ma commande cité en 1er :
$user = Get-ADUser TOTO -Properties mailNickName
$user.mailNickName = \"Le nickname à renseigner\"
Set-ADUser -instance $user
#TOTO être récupéré de chaque ligne du CSV à partir du champs SamAccountName ou UserPrincipalName par exemple
}
Merci pour votre aide.
Cordialement
Christophe
J'inaugure ma première demande d'aide en PowerShell.
Je pense ne pas être loin du but mais je me noie malgré tout. Je viens donc solliciter votre aide.
Mon premier besoin :
changer le champs MailNickName d'un utilisateur donné
La commande suivante correspond bien à ce que je cherche :
$user = Get-ADUser TOTO -Properties mailNickName
$user.mailNickName = \"Le nickname à renseigner\"
Set-ADUser -instance $user
Jusqu'ici cela fonctionne bien.
A côté de cela, j'exécute la commande suivante pour obtenir en CSV un ensemble d'utilisateurs avec quelques attributs AD
Get-ADUser -Filter * -Property * | Select Name,SamAccountName,MailNickName,CanonicalName,DistinguishedName,UserPrincipalName,Enabled,LastLogonDate | Export-CSV \"d:\userADGL-22042014.csv\"
Maintenant, je souhaite appliquer le même mailNickName sur X utilisateurs. Ces X utilisateurs proviennent de mon fichiers CSV (je ne garde que quelques lignes de ce CSV pour ne pas le faire sur tout le monde).
Je pense pour cela mettre ma première commande dans une boucle foreach {}
$fichierCSV = Import-Csv \"D:\userADGL-22042014.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
Et là, je ne sais pas du tout comment comment intégrer ma commande cité en 1er :
$user = Get-ADUser TOTO -Properties mailNickName
$user.mailNickName = \"Le nickname à renseigner\"
Set-ADUser -instance $user
#TOTO être récupéré de chaque ligne du CSV à partir du champs SamAccountName ou UserPrincipalName par exemple
}
Merci pour votre aide.
Cordialement
Christophe
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 11 mois #17382
par Philippe
Réponse de Philippe sur le sujet Re:Modifier un champs AD sur plusieurs utilisateurs A
Bonjour et bienvenue IronChris
petite info au passage, garde le select pour l'ordre de colonnes dans le fichier CSV, mais réduit le nombre de propriétés dans Get-ADUser.
ta commande sera plus rapide et moins gourmande en mémoire.
[code:1]get-aduser * -Property MailNickName,CanonicalName,LastLogonDate | select ..... | Export-Csv .....[/code:1]
si tu regarde ton fichier CSV, la premiere ligne contient le nom des champs exporté.
après l'import tu peut réutilisé ces noms de champs comme ceci :
[code:1]$variable.MailNickName
# dans ton cas dans une boucle foreach on utilise $_ :
$_.MailNickName[/code:1]
ton code final :
[code:1]$fichierCSV = Import-Csv \"D:userADGL-22042014.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
$user = Get-ADUser $_.SamAccountName -Properties mailNickName
$user.mailNickName = \"Le nickname à renseigner\"
Set-ADUser -instance $user
}[/code:1]
une bonne habitude est d'utilisé le SamAccountName ou sinon le DistinguishedName
petite info au passage, garde le select pour l'ordre de colonnes dans le fichier CSV, mais réduit le nombre de propriétés dans Get-ADUser.
ta commande sera plus rapide et moins gourmande en mémoire.
[code:1]get-aduser * -Property MailNickName,CanonicalName,LastLogonDate | select ..... | Export-Csv .....[/code:1]
si tu regarde ton fichier CSV, la premiere ligne contient le nom des champs exporté.
après l'import tu peut réutilisé ces noms de champs comme ceci :
[code:1]$variable.MailNickName
# dans ton cas dans une boucle foreach on utilise $_ :
$_.MailNickName[/code:1]
ton code final :
[code:1]$fichierCSV = Import-Csv \"D:userADGL-22042014.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
$user = Get-ADUser $_.SamAccountName -Properties mailNickName
$user.mailNickName = \"Le nickname à renseigner\"
Set-ADUser -instance $user
}[/code:1]
une bonne habitude est d'utilisé le SamAccountName ou sinon le DistinguishedName
Connexion ou Créer un compte pour participer à la conversation.
- ANTRI Mohamed
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 124
- Remerciements reçus 0
il y a 11 ans 11 mois #17383
par ANTRI Mohamed
Réponse de ANTRI Mohamed sur le sujet Re:Modifier un champs AD sur plusieurs utilisateurs A
Hello,
Petite rectification. Utilises plutôt le [code:1]distinguishedname[/code:1] ou [code:1]l'UPN[/code:1] qui sont unique dans ta forêt.
Le samaccountname n'est pas forcément unique sur une forêt.
c'était juste une petite remarque.
merci.
Petite rectification. Utilises plutôt le [code:1]distinguishedname[/code:1] ou [code:1]l'UPN[/code:1] qui sont unique dans ta forêt.
Le samaccountname n'est pas forcément unique sur une forêt.
c'était juste une petite remarque.
merci.
Connexion ou Créer un compte pour participer à la conversation.
- Angevin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 11 ans 10 mois #17385
par Angevin Christophe
Réponse de Angevin Christophe sur le sujet Re:Modifier un champs AD sur plusieurs utilisateurs A
Merci beaucoup.
Je m'empresse de tester ça de suite.
Je m'empresse de tester ça de suite.
Connexion ou Créer un compte pour participer à la conversation.
- Angevin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 11 ans 10 mois #17389
par Angevin Christophe
Réponse de Angevin Christophe sur le sujet Re:Modifier un champs AD sur plusieurs utilisateurs A
Bon, j'ai testé mais j'ai peut-être oublié quelque chose?!
Voici mon code
[code:1]
$credential = Get-Credential
Import-Module ActiveDirectory
$fichierCSV = Import-Csv \"D:\user_a_desactiver.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
$user = Get-ADUser $_.SamAccountName -Properties mailNickName
$user.mailNickName = \"SystemMailbox{\"
Set-ADUser -instance $user
}
[/code:1]
Et voici ce que cela donne comme message d'erreur :
[code:1]
Get-ADUser : Impossible de valider l'argument sur le paramètre « Identity ». L'argument est null. Indiquez un argument non-null et réessayez.
Au caractère C:\Users\cangevin\Desktop\Nouveau dossier\PowerShell\mailnickname.ps1:7 : 20
+ $user = Get-ADUser $_.SamAccountName -Properties mailNickName
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:«») [Get-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
Propriété « mailNickName » introuvable dans cet objet. Assurez-vous qu’elle existe et qu’elle peut être définie.
Au caractère C:\Users\cangevin\Desktop\Nouveau dossier\PowerShell\mailnickname.ps1:8 : 1
+ $user.mailNickName = \"SystemMailbox{\"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound
Set-ADUser : Impossible de valider l'argument sur le paramètre « Instance ». L'argument est null. Indiquez un argument non-null et réessayez.
Au caractère C:\Users\cangevin\Desktop\Nouveau dossier\PowerShell\mailnickname.ps1:9 : 22
+ Set-ADUser -instance $user
+ ~~~~~
+ CategoryInfo : InvalidData : (:«») [Set-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser
[/code:1]
Merci pour votre aide.
Voici mon code
[code:1]
$credential = Get-Credential
Import-Module ActiveDirectory
$fichierCSV = Import-Csv \"D:\user_a_desactiver.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
$user = Get-ADUser $_.SamAccountName -Properties mailNickName
$user.mailNickName = \"SystemMailbox{\"
Set-ADUser -instance $user
}
[/code:1]
Et voici ce que cela donne comme message d'erreur :
[code:1]
Get-ADUser : Impossible de valider l'argument sur le paramètre « Identity ». L'argument est null. Indiquez un argument non-null et réessayez.
Au caractère C:\Users\cangevin\Desktop\Nouveau dossier\PowerShell\mailnickname.ps1:7 : 20
+ $user = Get-ADUser $_.SamAccountName -Properties mailNickName
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:«») [Get-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
Propriété « mailNickName » introuvable dans cet objet. Assurez-vous qu’elle existe et qu’elle peut être définie.
Au caractère C:\Users\cangevin\Desktop\Nouveau dossier\PowerShell\mailnickname.ps1:8 : 1
+ $user.mailNickName = \"SystemMailbox{\"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFound
Set-ADUser : Impossible de valider l'argument sur le paramètre « Instance ». L'argument est null. Indiquez un argument non-null et réessayez.
Au caractère C:\Users\cangevin\Desktop\Nouveau dossier\PowerShell\mailnickname.ps1:9 : 22
+ Set-ADUser -instance $user
+ ~~~~~
+ CategoryInfo : InvalidData : (:«») [Set-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser
[/code:1]
Merci pour votre aide.
Connexion ou Créer un compte pour participer à la conversation.
- Angevin Christophe
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 11 ans 10 mois #17395
par Angevin Christophe
Réponse de Angevin Christophe sur le sujet Re:Modifier un champs AD sur plusieurs utilisateurs A
J'ai trouvé la solution à mon problème.
Voici le code que j'ai utilisé :
[code:1]
get$credential = Get-Credential
Import-Module ActiveDirectory
$fichierCSV = Import-Csv \"D:\user_a_desactiver.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
$user = Get-ADUser $ligne.SamAccountName -Properties mailNickName
$user.mailNickName = \"SystemMailbox{\"
Set-ADUser -instance $user
}
[/code:1]
Il fonctionne bien.
Merci encore pour l'aide que vous m'avez apporté.
Voici le code que j'ai utilisé :
[code:1]
get$credential = Get-Credential
Import-Module ActiveDirectory
$fichierCSV = Import-Csv \"D:\user_a_desactiver.csv\" -Delimiter \",\"
foreach($ligne in $fichierCSV)
{
$user = Get-ADUser $ligne.SamAccountName -Properties mailNickName
$user.mailNickName = \"SystemMailbox{\"
Set-ADUser -instance $user
}
[/code:1]
Il fonctionne bien.
Merci encore pour l'aide que vous m'avez apporté.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Modifier un champs AD sur plusieurs utilisateurs A