Question
Soucis de modifications Set-ADuser
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
c'est bon on c'est mis en accordEt sinon vous disputez pas à cause de moi hein
je rejoint laurent sur le dernier post
et donc erreur Set-ADUser : replace ci dessous ?[code:1]Set-ADUser : replaceC'est une commande que j'ai faite à part ne t'en fais pas mdr ( je suis nul mas pas à ce point )
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 ?
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 moiJ'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 ^^
Connexion ou Créer un compte pour participer à la conversation.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 48
- Remerciements reçus 0
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 !
Connexion ou Créer un compte pour participer à la conversation.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 48
- Remerciements reçus 0
[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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
Je vais pouvoir t'embêter alorsVoici le code final avec le grand retour du try catch
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.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
mais c'est tellement bon quand çà marche !J'ai trouvé bordel ! C'est tellement con
pour en revenir au replace j'ai relue la doc de set-ADUser et il se trouve que tu avais raison sur la syntaxe.
et ton problème était bien sur des champs vide !
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.
- Dupont
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 48
- Remerciements reçus 0
En tout cas merci à vous deux
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Soucis de modifications Set-ADuser