Question
update infos user via csv
- disquette
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 15 ans 6 mois #7677
par disquette
update infos user via csv a été créé par disquette
Bonjour à tous,
Pour mon premier script je desire automatiser la maj de mon LDAP via un fichier csv. Ce fichier sera generer par mon serveur de paie. comment proceder sachant que les noms des users ne sont par forcement les logins utilisateurs ? je compte dabord saisir le matricule des users et me basé ensuite sur cette clé.est-ce la bonne démarche ?, par contre si j'ai un utilisateur creé dans la base de paie je desire creer ce compte utilisateur.
Dans mon export je dispose NOM, PRENOM, matricule, direction, date de fin de contrat, qui devra correspondre a la date de validité du compte ad
Merci de votre aide, ou script déja existant pour me mettre sur les rails.
Pour mon premier script je desire automatiser la maj de mon LDAP via un fichier csv. Ce fichier sera generer par mon serveur de paie. comment proceder sachant que les noms des users ne sont par forcement les logins utilisateurs ? je compte dabord saisir le matricule des users et me basé ensuite sur cette clé.est-ce la bonne démarche ?, par contre si j'ai un utilisateur creé dans la base de paie je desire creer ce compte utilisateur.
Dans mon export je dispose NOM, PRENOM, matricule, direction, date de fin de contrat, qui devra correspondre a la date de validité du compte ad
Merci de votre aide, ou script déja existant pour me mettre sur les rails.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 6 mois #7678
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:update infos user via csv
Salut,
disquette écrit:
Existe-t-il une correspondance 1-1 entre un comptes utilisateur et un employé ?
disquette écrit:
Je ne vois pas d'autre moyen que de créer un identifiant unique, mais où comptes-tu saisir ces matricules ? dans un fichier de correspondances ? dans le soft de paie? dans ton annuaire LDAP ?je compte dabord saisir le matricule des users et me basé ensuite sur cette clé.est-ce la bonne démarche ?
Existe-t-il une correspondance 1-1 entre un comptes utilisateur et un employé ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- disquette
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 15 ans 6 mois #7679
par disquette
Réponse de disquette sur le sujet Re:update infos user via csv
merci de me répondre,
Oui j'ai commencé a importer les matricules par rapport au sn et l'export de ma paie. les matricules sont présent dans ma paie avec le nom de utilisateur, qui ne correspond pas forecement au compte AD
j'utilise la clé employeeID pour le matricule, et sera la clé d'index, cette info sera identique dans le ldap et paie.
J'essaye avec cette ligne de commande, mais cela ne fonctionne pas
Import-Csv users.csv | foreach {set-qaduser -Identity $_.employeeID -Department $_.Department -ObjectAttributes @{extensionattribute1=$_.extensionAttribute1}}
Oui j'ai commencé a importer les matricules par rapport au sn et l'export de ma paie. les matricules sont présent dans ma paie avec le nom de utilisateur, qui ne correspond pas forecement au compte AD
j'utilise la clé employeeID pour le matricule, et sera la clé d'index, cette info sera identique dans le ldap et paie.
J'essaye avec cette ligne de commande, mais cela ne fonctionne pas
Import-Csv users.csv | foreach {set-qaduser -Identity $_.employeeID -Department $_.Department -ObjectAttributes @{extensionattribute1=$_.extensionAttribute1}}
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 6 mois #7683
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:update infos user via csv
disquette écrit:
De plus que cherches-tu à faire avec le code que tu cites ?
Si je me refére au verbe du cmdlet, Set, celui-ci peut-t-il créer un compte inexistant ?
Dans un premier temps code la recherche d'un compte existant et d'un compte inexistant, ensuite tu généralises.
Puisque employeeID permet la jointure, le reste ne devrais pas poser de pb, enfin c'est une intuition
Je ne puis t'être utile sur ce point là je ne connais pas ou si peu AD.J'essaye avec cette ligne de commande, mais cela ne fonctionne pas
De plus que cherches-tu à faire avec le code que tu cites ?
Si je me refére au verbe du cmdlet, Set, celui-ci peut-t-il créer un compte inexistant ?
Dans un premier temps code la recherche d'un compte existant et d'un compte inexistant, ensuite tu généralises.
Puisque employeeID permet la jointure, le reste ne devrais pas poser de pb, enfin c'est une intuition
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Alan Pinard
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 77
- Remerciements reçus 0
il y a 15 ans 6 mois #7688
par Alan Pinard
Alan Pinard
Version A
Réponse de Alan Pinard sur le sujet Re:update infos user via csv
Bonjour Disquette,
Tu porte un surnom nostalgique ;p.
Voici un bout de code qui te permet de faire ce que tu veux. Tu pourras l'adapter à tes besoins.
[code:1]
Function Create-ADUser {
PARAM(
$User #Tu passera un objet PSObject que tu vas recuperer du fichier csv
)
Write-Host -ForegroundColor Cyan \"************Create-ADUser\"
#Transformation de la chaine DNS en chaine de connexion LDAP
$domaineLDAP = (\"DC=\" + $ENV:USERDNSDOMAIN.Replace(\".\",\",DC=\"«»)) #Recuperation du nom de domaine
$OU1 = $User.OU # Recuperation dans le fichier fichier csv de l'ou dans laquel tu veux créer le compte usager
$objOU = [ADSI]\"LDAP://OU=$OU1,$domaineLDAP\" #connexion a l'AD
#Attention pour le CN=USERS, c'est un container par défaut, ne pas confondre container par défaut et OU. Si c'est une OU, on met OU=MONOU
$CN = $User.Name #Recuperation du common name dans le csv
Write-Host -ForegroundColor Cyan \"Creation de l'utilisateur -> $CN\"
Write-Host -ForegroundColor Cyan \"Information sur l'utilisateur:\"
$User
Write-Host -ForegroundColor Cyan \"**************************************************\"
$objUser = $objOU.Create( \"user\",\"CN=$CN\"«»)
#LA premiere parti entre les () c'est le nom du champs dans l'AD. Tu peux utiliser ADSIEdit.msc pour voir ces champs. ATTENTION c'est comme travailler avec Regedt.exe. Il faut etre prudent.
$objUser.put(\"samAccountName\",($User.samAccountName))
$objUser.put(\"userprincipalName\",($User.samAccountName + \"@\" + $domaineLDAP))
$objUser.put(\"extensionAttribute1\",($User.Matricule)) # C'est le champs que tu voulais rajouter.
$objUser.put(\"givenName\",($User.givenName))
$objUser.put(\"sn\",($User.SurName))
$objUser.put(\"telephoneNumber\",($User.telephoneNumber))
$objUser.put(\"DisplayName\",($User.DisplayName))
$objUser.SetInfo()
#configure la \"strategie de mot de passe\" dans notre cas il active le compte et force le mot de passe inscrit dans le fichier csv. Mais ce pourrais être de forcer la configuration afin qu'il change le mot de passe au premier login
$Pwrd = $User.Password
$objUser.psbase.invoke(\"setPassword\",$Pwrd)
$objUser.psbase.invokeSet(\"AccountDisabled\",$False)
$objUser.psbase.CommitChanges()
#Creation du repertoire personnel de l'utilisateur
New-Item -Path $($User.homeDirectory + \"\\" + $CN) -type directory
}
[/code:1]
Tu trouveras en attachement un exemple de fichier CSV. J'ai mit les informations de 2 comptes à créer dans l'AD.
Exemple d'utilisation de la fonction:
Il faut que tu exécute le script sur un poste membre du domaine ainsi qu'avec un compte ayant les droits pour la lecture et écriture sur l'OU.
En espérant que cela t'aidera.
**Je n'utilise pas les CmdLets de QUEST pour ceci, j'y vais directement avec le .NET
Alan Pinard
<br><br>Message édité par: Versiona, à: 27/08/10 22:45
Tu porte un surnom nostalgique ;p.
Voici un bout de code qui te permet de faire ce que tu veux. Tu pourras l'adapter à tes besoins.
[code:1]
Function Create-ADUser {
PARAM(
$User #Tu passera un objet PSObject que tu vas recuperer du fichier csv
)
Write-Host -ForegroundColor Cyan \"************Create-ADUser\"
#Transformation de la chaine DNS en chaine de connexion LDAP
$domaineLDAP = (\"DC=\" + $ENV:USERDNSDOMAIN.Replace(\".\",\",DC=\"«»)) #Recuperation du nom de domaine
$OU1 = $User.OU # Recuperation dans le fichier fichier csv de l'ou dans laquel tu veux créer le compte usager
$objOU = [ADSI]\"LDAP://OU=$OU1,$domaineLDAP\" #connexion a l'AD
#Attention pour le CN=USERS, c'est un container par défaut, ne pas confondre container par défaut et OU. Si c'est une OU, on met OU=MONOU
$CN = $User.Name #Recuperation du common name dans le csv
Write-Host -ForegroundColor Cyan \"Creation de l'utilisateur -> $CN\"
Write-Host -ForegroundColor Cyan \"Information sur l'utilisateur:\"
$User
Write-Host -ForegroundColor Cyan \"**************************************************\"
$objUser = $objOU.Create( \"user\",\"CN=$CN\"«»)
#LA premiere parti entre les () c'est le nom du champs dans l'AD. Tu peux utiliser ADSIEdit.msc pour voir ces champs. ATTENTION c'est comme travailler avec Regedt.exe. Il faut etre prudent.
$objUser.put(\"samAccountName\",($User.samAccountName))
$objUser.put(\"userprincipalName\",($User.samAccountName + \"@\" + $domaineLDAP))
$objUser.put(\"extensionAttribute1\",($User.Matricule)) # C'est le champs que tu voulais rajouter.
$objUser.put(\"givenName\",($User.givenName))
$objUser.put(\"sn\",($User.SurName))
$objUser.put(\"telephoneNumber\",($User.telephoneNumber))
$objUser.put(\"DisplayName\",($User.DisplayName))
$objUser.SetInfo()
#configure la \"strategie de mot de passe\" dans notre cas il active le compte et force le mot de passe inscrit dans le fichier csv. Mais ce pourrais être de forcer la configuration afin qu'il change le mot de passe au premier login
$Pwrd = $User.Password
$objUser.psbase.invoke(\"setPassword\",$Pwrd)
$objUser.psbase.invokeSet(\"AccountDisabled\",$False)
$objUser.psbase.CommitChanges()
#Creation du repertoire personnel de l'utilisateur
New-Item -Path $($User.homeDirectory + \"\\" + $CN) -type directory
}
[/code:1]
Tu trouveras en attachement un exemple de fichier CSV. J'ai mit les informations de 2 comptes à créer dans l'AD.
Exemple d'utilisation de la fonction:
(Import-Csv \"C:\Test.csv\") | % {
Create-ADUser -User $_
}
Il faut que tu exécute le script sur un poste membre du domaine ainsi qu'avec un compte ayant les droits pour la lecture et écriture sur l'OU.
En espérant que cela t'aidera.
**Je n'utilise pas les CmdLets de QUEST pour ceci, j'y vais directement avec le .NET
Alan Pinard
La pièce jointe test-1769bfb52fb4c300817161fc88d81e5e.zip est absente ou indisponible
Alan Pinard
Version A
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- disquette
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 15 ans 4 mois #7976
par disquette
Réponse de disquette sur le sujet Re:update infos user via csv
Bonjour
Que ce passe t'il si un compte existe déja dans mon ad ?
Que ce passe t'il si un compte existe déja dans mon ad ?
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
- update infos user via csv