Question update infos user via csv

Plus d'informations
il y a 15 ans 6 mois #7677 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.
:)

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

Plus d'informations
il y a 15 ans 6 mois #7678 par Laurent Dardenne
Salut,
disquette écrit:

je compte dabord saisir le matricule des users et me basé ensuite sur cette clé.est-ce la bonne démarche ?

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 ?
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.

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

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

Plus d'informations
il y a 15 ans 6 mois #7683 par Laurent Dardenne
disquette écrit:

J'essaye avec cette ligne de commande, mais cela ne fonctionne pas :(

Je ne puis t'être utile sur ce point là je ne connais pas ou si peu AD.

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.

Plus d'informations
il y a 15 ans 6 mois #7688 par Alan Pinard
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:

(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

<br><br>Message édité par: Versiona, à: 27/08/10 22:45

Alan Pinard
Version A

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

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

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

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