Forum Keyyo
Import/Export CSV Annuaire Keyyo - Version imprimable

+- Forum Keyyo (https://forum.keyyo.com)
+-- Forum : Entreprises (/forumdisplay.php?fid=3)
+--- Forum : Applications (/forumdisplay.php?fid=12)
+--- Sujet : Import/Export CSV Annuaire Keyyo (/showthread.php?tid=1489)



Import/Export CSV Annuaire Keyyo - IT_Tech - 09/03/2015 15:54

Bonjour à tous,

Je tenais à partager avec vous un petit script PowerShell (dont je ne suis pas l'auteur) que j'ai modifié pour répondre à un problème que je rencontre avec la synchro Active Directory / Agenda Keyyo (cf. http://forum.keyyo.com/showthread.php?tid=1488)

Ce script permet d'exporter les utilisateurs d'un Active Directory dans un fichier CSV formaté selon le modèle d'annuaire type de Keyyo pour ainsi le réimporter simplement depuis "Mon annuaire" ; "Importer mon annuaire"

Je vous laisse le soin d'analyser le code ci-dessous, dans lequel j'ai ajouté quelques commentaires.
Pour plus de lisibilité je vous conseille de copier et coller le code dans un éditeur du type Notepad++ pour que la magie de la coloration syntaxique fasse effet !

Code :
###########################################################
# AUTEUR  : Victor Ashiedu
# MODIF.  : IT_Tech
# SITE       : iTechguides.com
# BLOG    : iTechguides.com/blog-2/
# CREATED : 08-08-2014
# UPDATED : 09-03-2015
# COMMENT : This script exports Active Directory users
#           to a a csv file. v2.1 adds the condition to
#           ignore all users with the info (Notes) field
#           found on the Telephones tab containing the
#           word 'Migrated'.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#           J'ai laissé les commentaires d'origine,
#           Je détaille juste les lignes qui me semblent
#           essentielles pour la compréhension du script.
#           IT_Tech
###########################################################


#Define location of my script variable
#the -parent switch returns one directory lower from directory defined.
#below will return up to ImportADUsers folder
#and since my files are located here it will find it.
#It fails without appending "*.*" at the end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Remplacez le chemin ci-dessous par le chemin qui convient à votre configuration
#Dans notre cas, le présent script est stocké sur le bureau de
#L'utilisateur connecté dans un dossier appelé "ExportADUsers"
#Veillez à bien conserver "*.*" à la fin du chemin
#Et surtout à mettre le chemin absolu, pas de variables !

$path = Split-Path -parent "C:\Users\<utilisateur>\Desktop\ExportADUsers\*.*"

#Create a variable for the date stamp in the log file

$LogDate = get-date -f yyyyMMddhhmm

#Define CSV and log file location variables
#they have to be on the same location as the script
# - - - - - - - - - - - - - - - - - - - - - - - - -
#Cette variable définit le nom du fichier exporté

$csvfile = $path + "\Exportation_AD_du_$logDate.csv"

#import the ActiveDirectory Module

Import-Module ActiveDirectory


#Sets the OU to do the base search for all user accounts, change as required.
#Simon discovered that some users were missing
#I decided to run the report from the root of the domain
# - - - - - - - - - - - - - - - - - - - - - - - - -
#Variable contenant l'Unité d'organisation où se trouve les utilisateurs
#Que vous souhaitez exporter. Pour une expression correcte je vous conseille
#D'utiliser ADExplorer.exe disponible sur le TechNet Microsoft et de copier
#Le chemin complet de l'OU

$SearchBase = "OU=Services_généraux,OU=Ma_Société,DC=Mon-domaine,DC=pro"

#Get Admin accountb credential

$GetAdminact = Get-Credential

#Define variable for a server with AD web services installed
# - - - - - - - - - - - - - - - - - - - - - - - - -
#Nom du serveur Active Directory

$ADServer = 'MON_SERVEUR'

#Find users that are not disabled
#To test, I moved the following users to the OU=ADMigration:
#Philip Steventon (kingston.gov.uk/RBK Users/ICT Staff/Philip Steventon) - Disabled account
#Joseph Martins (kingston.gov.uk/RBK Users/ICT Staff/Joseph Martins) - Disabled account
#may have to get accountb status with another AD object

#Define "Account Status"
#Added the Where-Object clause on 23/07/2014
#Requested by the project team. This 'flag field' needs
#updated in the import script when users fields are updated
#The word 'Migrated' is added in the Notes field, on the Telephone tab.
#The LDAB object name for Notes is 'info'.

$AllADUsers = Get-ADUser -server $ADServer `
-Credential $GetAdminact -searchbase $SearchBase `
-Filter * -Properties * | Where-Object {$_.info -NE 'Migrated'} #ensures that updated users are never exported.

#Formatage du fichier CSV
#J'ai repris les colonnes d'un fichier CSV exporté depuis "Mon agenda" sur l'interface web Keyyo
#Les champs dans lesquels sont récupérés les numéros sont à adapter en fonction de votre AD
#J'ai par exemple mis "ipPhone" pour le numéro abrégé, cela correspond à "Téléphone IP" dans l'AD

$AllADUsers |
Select-Object @{Label = "Clé unique";Expression = {$_.objectSid}}, #A défaut de chercher comment incrémenter ce nombre j'ai mis une valeur propre à chaque compte
@{Label = "Numéro";Expression = {$_.telephoneNumber}},
@{Label = "Nom";Expression = {$_.Surname}},
@{Label = "Prénom";Expression = {$_.GivenName}},
@{Label = "Email";Expression = {$_.Mail}},
@{Label = "Tél. Mobile";Expression = {$_.mobile}},
@{Label = "N° abrégé";Expression = {$_.ipPhone}},
@{Label = "Groupe / Service";Expression = {$_.City}}, #"Groupe / Service" en fonction de la ville (propre à l'annuaire que j'utilise dans ma société), remplacez par "$_.department" si vous le souhaitez
@{Label = "Tél. domicile";Expression = {$_.homePhone}},
@{Label = "Société";Expression = {$_.Company}},
@{Label = "Fonction";Expression = {$_.Title}},
@{Label = "Adresse";Expression = {$_.StreetAddress}},
@{Label = "Code postal";Expression = {$_.PostalCode}},
@{Label = "Ville";Expression = {$_.City}},
@{Label = "Pays";Expression = {$_.co}}|

#Export CSV report

Export-Csv -Path $csvfile -NoTypeInformation -Encoding UTF8 -Delimiter ';'

Source


RE: Import/Export CSV Annuaire Keyyo - CorAyA21 - 09/03/2015 18:10

Bonjour,

Je ne peux pas faire la synchro AD avec Keyyo car mon AD est en cloud (c'est une version modifié/propriétaire de LDAP apriori)

Je vais tester votre script.
Merci pour l'astuce! Wink

Cdt,