Question Création automatique de Bal's en masse

Plus d'informations
il y a 13 ans 1 mois #389 par greg
Bonjour tout le monde,

Voici un tuto pour créer automatiquement des Boites aux lettres utilisateur sous Exchange 2007 à l'aide d'un script PowerShell et d'un fichier CSV généré par un script en VBS (désolé Arnaud pour le VBS ;-) ) allant chercher les propriétés utilisateurs depuis Active Directory.
Cependant,les mots de passe sont importés depuis un autre fichier excel.

Script VBS qui permet de récupérer le LastName, FirstName et le DisplayName des Users de l'UO spécifié lors de l'exécution du script


[code:1]'
SCRIPT d'export d'utilisateurs depuis une OU
'
Le domaine AD est a jouter en fixe dans le
'
String StrDomainDN pour des raisons d'utilisations courantes

dim fso, MyFile, reptemp, filetext


Stroucible=inputbox(\"Ou spécifiée\"«»)

' Attention à modifier le nom LDAP du domaine
strDomainDN =\"ou=\" & stroucible & \",dc=MonDomaine,dc=FR\"

' Attention le répertoire c:\temp doit exister
reptemp=\"c:\temp\\"

Filetext=Inputbox(\"fichier temporaire de l'OU cible : \"«»)
Set fso = CreateObject(\"Scripting.FileSystemObject\"«»)

' création d'un fichier txt pour la première partie du script, soit le nom des utilisateurs
set MyFile = fso.CreateTextFile(reptemp + filetext + \".txt\"«»)

' Ici un filtre sur les utilisateurs et je récupére leur Distinguishedname
strBase = \"<LDAP://\" & strDomainDN & \">;\"
strFilter = \"(&(objectclass=user)(objectcategory=person));\"
strAttrs = \"distinguishedname;\"
strScope = \"subtree\"

set objConn = CreateObject(\"ADODB.Connection\"«»)
objConn.Provider = \"ADsDSOObject\"
objConn.Open \"Active Directory Provider\"

' Ici lancement de la requêtes et écriture dans le fichier txt dans le c:\temp
set objRS = objConn.Execute(strBase & strFilter & strAttrs & strScope)
objRS.MoveFirst
while Not objRS.EOF
MyFile.WriteLine (objRS.Fields(0).Value)
objRS.MoveNext
wend
MyFile.close


' Maintenant avec le fichier txt je récupère les informations utilisateurs par utilisateurs
on error resume next
Dim objConnection, objRecords, objExcel, strQuery, i, objSpread, intRow

'Attention le fichier C:\source.xls doit exister
strSheet = \"c:\Sources.xls\"

Set objExcel = CreateObject(\"Excel.Application\"«»)
Set objSpread = objExcel.Workbooks.Open(strSheet)
Set objFSO = CreateObject(\"Scripting.FileSystemObject\"«»)
Set UserListe = objFSO.OpenTextFile(reptemp + Filetext + \".txt\"«»)

'Renseigner le numéro de la première ligne Excel ou vous souhaité écrire les inforamations
i = 3

' liste des attributs à récupérer
Do Until UserListe.AtEndofStream
UserLDAP = UserListe.Readline
Set objUser = GetObject(\"LDAP://\" & UserLDAP & \"\"«»)
CNStr = left(UserLDAP, Instr (UserLDAP, \",\"«») -1)
OuStr = Right(UserLDAP, len(UserLDAP) - Instr (UserLDAP, \",\"«»))

objExcel.ActiveSheet.Range(\"A\" & i).Value = objUser.LastName
objExcel.ActiveSheet.Range(\"B\" & i).Value = objUser.FirstName
objExcel.ActiveSheet.Range(\"C\" & i).Value = objUser.displayName

i = i + 1
loop



'Sauvegarde du fichier Excel
objExcel.ActiveWorkbook.SaveAs(reptemp + Filetext + \".xls\"«»)
objExcel.ActiveWorkbook.Close
objExcel.Workbooks.Close

msgbox \"fin de récupération des utilisateurs. Le fichiers excel est dans \" + reptemp + Filetext + \".xls\"
objExcel.Quit[/code:1]

1\: - Modifier \"MonDomaine\" par le nom de votre domaine avec son extention
- Créer le répertoire c:\temp puis le fichier c:\source.xls

2\: - Exécuter le script

3\: - Une fois votre fichier .xls mis en forme, exporter le au format CSV.

(La colonne UPN est calculée à l'aide des fonctions Concatener et Gauche)

4\: - Maintenant exécuter le script PowerShell que voici:


[code:1]##Lancer la commande Script.ps1 <nom du fichier CSV>
## <Nom du fichier CSV> peut contenir un chemin d'accès au fichier et peut être mis entre \"\"
## exemple : Script.ps1 \"c:\Fichier.csv\"
##
## Récupérer le nom du fichier CSV qui est passé en argument du script
## et stocker cette information (nom et chemin) dans la variable 'data'

$data = import-csv $args[0]

## Fonction pour convertir le mot de passe en clair dans le fichier CSV en 'secure string'

function New-SecureString([string] $plainText)
{
$secureString = new-object System.Security.SecureString

foreach($char in $plainText.ToCharArray())
{
$secureString.AppendChar($char)
}

$secureString
}
## Fin de Fonction

## Pour chacune des lignes du fichier exécuter les commandes suivantes. Les données sont récupérées dans l'array $i
foreach ($i in $data)
{
## Transformer le mot de passe en clair en codé à laide de la fonction new-securestring définie plus haut
$ss = new-securestring $i.password

## Executer la commande Powershell Exchange de création de la mailbox avec les paramètres du fichier CSV
## et les paramètre construit par ce script.
new-mailbox -Password $ss -Name $i.DisplayName -OrganizationalUnit \"Votre_Organisation_Exchange\" -FirstName $i.firstName -LastName $i.LastName -Database \"Nom_De_Votre_Serveur_Exchange\First Storage Group\Mailbox Database\" -UserPrincipalName $i.UPN
}[/code:1]

Voila les boîtes sont créées!!<br><br>Message édité par: greg, à: 28/05/07 09:25
Pièces jointes :

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

Plus d'informations
il y a 13 ans 1 mois #390 par greg
Arf l'image fait 36Ko et comme dim: 568x200, trop gros, trop grand???

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

Plus d'informations
il y a 13 ans 1 mois #392 par Arnaud
Salut Greg,

Merci pour ta contribution ;)

Les dimensions des images par défaut sont 499x499, j'ai modifié le forum pour accepter des images de 600x499.
Peux tu essayer de reposter ton image car maintenant ça devrait fonctionner ?

@++
Arnaud
PS: Honte à toi pour le VBS :P

Créateur du forum de la communauté PowerShell Francophone

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

Plus d'informations
il y a 13 ans 1 mois #399 par greg
salut Arnaud,

lol voui c'est vrai que t'aimerais bien tourner la page sur le vbs, mais dès que j'ai fini le projet sur exchange 2K7, je modifie le script vbs en PSH, mais y'a des priorités malheureusement...:huh:
Pour l'image je la mets des lundi matin sinon le tuto n'est pas au point.. lol ;)

a+
greg

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

Plus d'informations
il y a 13 ans 1 mois #400 par Arnaud
Salut Greg,

Dis donc t'es matinal aujourd'hui :laugh: !!!

Je te charies pour VBS, moi aussi (je l'avoue) il m'arrive encore (rarrement) de réutiliser des scripts VBS pour gagner du temps.

A lundi donc pour ton (super ;)) tuto.

Arnaud

Créateur du forum de la communauté PowerShell Francophone

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

Plus d'informations
il y a 13 ans 1 mois #409 par greg
lol, plus couche tard!!

Je dois encore apporter quelques modifications, j'éditerais le topic et en ferais part dès que tout sera ok!

a+

Greg

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

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