Sources utilisées :
Import contacts into Exchange Server 2007 from CSV file : http://blog.sortedit.net/2007/10/21/import-contacts-into-exchange-2007-using-csv.aspx
Convert password in secure string : http://www.leeholmes.com/blog/SecureStringsInPowerShell.aspx
Set-QADUser sample for enabling user for OCS : http://www.powergui.org/thread.jspa?messageID=14068&tstart=0 post from Shay Levy
Exemple de fichier CSV :
--------------------Copier à partir de la ligne en dessous------------------------
Alias,First,Last,Phone,Dept,Title,Office,Manager
parditti,Pierre,Arditti,4001,SMS&P,PTS,IDF,
earditti,Eric,Arditti,4001,SMS&P,PTS,IDF,parditti
--------------------Copier jusqu'à la ligne au dessus-----------------------------
A force de reconstruire régulièrement mon environnement de démonstration, je me suis dit qu'il serait bon de consacrer le moins de temps possible pour la création des utilisateurs.
J'ai donc pris l'option d'un script Powershell pour effectuer à partir d'un fichier CSV les opérations suivantes :
- Création d'un compte Active Directory
- Création de la boîte aux lettres correspondante
- Activation de l'UM pour ce compte
- Activation des fonctions MOCS standards pour ce compte
- Et activation des fonctions ToIP pour ce même compte
- L'attribut le mot de passe n'expire jamais est aussi validé
Il faut disposer des extensions Powershell de la société Quest (extensions gratuites) disponibles ici :
http://www.quest.com/powershell/activeroles-server.aspx
# Le script powershell suivant permet de créer des à partir d'un fichier CSV
# Le fichier doit être dans le même répertoire que le script
# Attention le script n'opère aucun contrôle (pas de log, ...)
#
# Variables utilisées :
#
# $_. (defined by $entry) calls the respective column in the CSV (e.g. $_.First calls the data from csv column titled First)
# $_.First is First Name
# $_.Last is Last Name
# $DN is Display Name
# $OU is the Target Organizational Unit for Contact Objects (String Value enclosed in '')
# $a is used to strip out ANY "White" space in the First Name
# $b is used to strip out ANY "White" space in the Last Name
# $Alias is used to create the Alias for each contact
# Define Common Variables
# OU dans laquelle seront créés les utilisateurs
$ADOU = 'mydomain/Users'
# Dans quel store Exchange sont créés les mailbox
$EXDB = 'mymbxsrv\First Storage Group\Mailbox Database'
# domain SIP considéré
$Domain = '@mydomain.net'
# le mot de passe
$PassW = 'mypassword'
# pour l'attribut société
$Comp = 'mycompany'
# le pin code
$PIN = 'mypincode'
# la strategie UM correspondante
$UMPolicy = 'MyDP Default Policy'
# Pool serveur MOCS a utiliser
$serverpool = 'CN=LC Services,CN=Microsoft,CN=mysrv,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=mydomain,DC=NET'
# Nouveau avec MOCS R2 il faut positionner un location profil au niveau des utilisateurs aussi dans leurs proprietes voix avancees / attention le premier CN est l'unique object ID de votre DialPlan
$locationprf = 'CN={E3006B5E-46D9-4E2E-B425-A5F434AD04DB},CN=Location Profiles,CN=RTC Service,CN=Services,CN=Configuration,DC=mydomain,DC=NET'
# Fonction de conversion du mot de passe en SecureString
function New-SecureString([string] $plainText)
{
$secureString = new-object System.Security.SecureString
foreach ($char in $plainText.ToCharArray())
{
$secureString.AppendChar($char)
}
$secureString
}
# mon mot de passe est toujours le meme donc je le genere une fois il peut etre plus interessant de le placer dans la boucle de lecture du CSV surtout si vous definissez le mot de passe dans ce meme CSV
$PW = new-secureString $PassW
# On s occupe du fichier CSV
Write-host "Creating Contacts..."
import-csv 'MOCSR2Users.csv' |
foreach{
$entry = $_
$DN = $_.First+" " +$_.Last;
$a = $_.First.Replace(" ", "")
$b = $_.Last.Replace(" ", "")
#Numero de telephone pour attribut correspondant dans AD
$Tel = "01XXXX" + $_.Phone
#Numero de telephone au format E.164 pour MOCS
$TelE164 = "+331XXXX" + $_.Phone
$UPN = $_.Alias + $Domain
$SAM = $_.Alias
# Creation de la boite aux lettres
New-Mailbox -Name $DN -Alias $_.Alias -OrganizationalUnit $ADOU -UserPrincipalName $UPN -SamAccountName $SAM -FirstName $_.First -Initials '' -LastName $_.Last -Password $PW -ResetPasswordOnNextLogon $false -Database $EXDB
# On rentre ce qui va bien dans les bons attributs
Set-User $DN -Phone $Tel -Title $_.Title -Office $_.Office -Department $_.Dept -Company $Comp
# Cette ligne permet de documenter le manager si elle echoue elle est sans impact sur les autres lignes et comme elle peut etre vide au moins dans mon sample
Set-User $DN -Manager $_.Manager
# Activation de l UM pour l utilisateur
Enable-UMMailbox -id $_.Alias -Pin $PIN -PinExpired $false -UMMailboxPolicy $UMPolicy -Extensions $_.Phone -SIPResourceIdentifier $UPN
# Activation de l utilisateur pour MOCS ToIP comprise et on positionne a never expires le mot de passe
$oa = @{'UserAccountControl'=66048; 'msRTCSIP-ArchivingEnabled'=0; 'msRTCSIP-FederationEnabled'=$true; 'msRTCSIP-InternetAccessEnabled'=$true; 'msRTCSIP-OptionFlags'=385; 'msRTCSIP-PrimaryHomeServer'=$serverpool; 'msRTCSIP-PrimaryUserAddress'=("sip:" + $UPN ); 'msRTCSIP-Line' = 'tel:' + $TelE164; 'msRTCSIP-UserLocationProfile'=$locationprf; 'msRTCSIP-UserEnabled'=$true }
Set-QADUser $DN -oa $oa
}
J'espère que cela vous aidera.