Question Modifier un champs AD sur plusieurs utilisateurs A

Plus d'informations
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

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

Plus d'informations
il y a 11 ans 11 mois #17382 par Philippe
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

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

Plus d'informations
il y a 11 ans 11 mois #17383 par ANTRI Mohamed
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. :P

c'était juste une petite remarque.

merci.

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

Plus d'informations
il y a 11 ans 10 mois #17385 par Angevin Christophe
Merci beaucoup.

Je m'empresse de tester ça de suite.:)

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

Plus d'informations
il y a 11 ans 10 mois #17389 par Angevin Christophe
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.

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

Plus d'informations
il y a 11 ans 10 mois #17395 par Angevin Christophe
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é.

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

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