Question Soucis de modifications Set-ADuser

Plus d'informations
il y a 11 ans 1 mois #18970 par Philippe

Et sinon vous disputez pas à cause de moi hein

c'est bon on c'est mis en accord
je rejoint laurent sur le dernier post

C'est une commande que j'ai faite à part ne t'en fais pas mdr ( je suis nul mas pas à ce point )

et donc erreur Set-ADUser : replace ci dessous ?[code:1]Set-ADUser : replace
Au caractère C:\Projet2\New user.ps1:34 : 9
+ Set-ADUser -Identity $SAM -GivenName $Firstname -Surname $Lastname -Disp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (backelas01d:ADUser) [Set-ADUser], ADInvalidOperationException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.SetADUser
[/code:1]çà arrive quand ?
on alors y a plus d'erreur ?

J'ai juste rajouté l'OU spécifique à la génération du tableau string pour éviter qu'ils me prennent les comptes de service , et on peut pas les éditer je crois en plus donc en imaginant qu'ils soient dans mon csv ( ils le sont pas ) ça foutrait le bordel ^^

le fait que les comptes de service soit dans $compteExistant ne pose pas de problème non plus mais tu a un AD bien organisé pas de problème pour moi

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

Plus d'informations
il y a 11 ans 1 mois #18973 par Dupont
J'ai trouvé bordel ! C'est tellement con ! Enfaite je voulais renseigner un truc vide , dans mon Csv le \"company\" n'avait pas de valeur pour mon user du coup ça génère l'erreur , bisarre cependant que les autres ne soient pas renseignés...

Du coup en enlevant le -Company $Company j'ai réussi , ça forcera les collègues à faire les choses bien et à mettre toutes les infos ! :p

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

Plus d'informations
il y a 11 ans 1 mois #18974 par Dupont
Voici le code final avec le grand retour du try catch xD

[code:1]Import-Module ActiveDirectory


$OU = \"OU=Test,DC=TEST,DC=LO\" #L' OU à spécifier est celle où vous voulez que les Users soient créés
$Path = \"C:\Projet2\\" # Ce chemin est à changer selon vos préférences
$compteExistant =[string[]](Get-ADUser -Filter * -Properties * -SearchBase $OU).SamAccountName
$pass = ConvertTo-SecureString -String \"Azerty01!\" -AsPlainText –Force #Convertit le mot de passe en châine sécurisée afin qu'il puisse être utilisé lors de la création
$users = Import-Csv -Encoding UTF8 -Path $Path\DomainUsers.csv
$users | Get-Member

foreach ($User in $users)
{
$Name = $User.name
$Firstname = $User.Firstname
$Lastname = $User.LastName
$Detailedname = $Firstname +\" \" + $Lastname
$logonName = $User.LogonName
$SAM = $User.SamAccountName
$upn = \"$SAM\" + \"@TEST.LO\" # Changer ce qui est entre guillemets par votre nom de domaine ex: \"@CA01.fr\"
$description = $User.Description
$company = $User.Company




#Attention tous les champs de la commande Set-ADUser doivent être renseignés pour que la commande ne génère pas d'erreur
if ($compteExistant -eq $SAM)
{ Write-Host \"L'utilisateur\" $SAM \"existe déjà , ces données seront modifiées par celles contenues dans le fichier Csv\"
try {
Set-ADUser -Identity $SAM -GivenName $Firstname -Surname $Lastname -DisplayName $Detailedname -UserPrincipalName $logonName -Company $company -Description $description
}
catch [Microsoft.ActiveDirectory.Management.ADInvalidOperationException]
{
Write-Host \"Vous devez renseigner tous les champs dans le fichier CSV pour le bon fonctionnement du script\"
}
}
else {
New-ADUser -Name $SAM -SamAccountName $SAM -GivenName $Firstname -Surname $Lastname -DisplayName $Detailedname -UserPrincipalName $logonName -Company $company -Description $description -AccountPassword $pass -Enabled $true -ChangePasswordAtLogon $true -Path $OU
}

}
[/code:1]

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

Plus d'informations
il y a 11 ans 1 mois #18976 par Laurent Dardenne
KaAzZ01 écrit:

Voici le code final avec le grand retour du try catch

Je vais pouvoir t'embêter alors :P
Dans le catch il est préférable de remplacer ceci :
[code:1] Write-Host \"Vous devez renseigner tous les champs...'[/code:1]
par cela :
[code:1] Write-Error \"Vous devez renseigner tous les champs...: $User'[/code:1]
Tu transformes une exception bloquante en une erreur simple, l'itération continue de fonctionner.

Ainsi on sait quelle ligne pose pb (c + mieux) et si un jour tu réutilises ton code dans un job, celui-ci continue de fonctionner.<br><br>Message édité par: Laurent Dardenne, à: 7/02/15 16:54

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 1 mois #18977 par Philippe

J'ai trouvé bordel ! C'est tellement con

mais c'est tellement bon quand çà marche !

pour en revenir au replace j'ai relue la doc de set-ADUser et il se trouve que tu avais raison sur la syntaxe. :blush:
et ton problème était bien sur des champs vide ! B)

bravo pour ton débogage :)

reste a savoir si une description vide est normal ou pas
et a adapté ton script pour le cas ou c'est normal !!!

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

Plus d'informations
il y a 11 ans 1 mois #18994 par Dupont
Yep , c'est vrai que ca fait plaisir :)
En tout cas merci à vous deux

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

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