Gebruikers via CSV aanmaken

Zoals je misschien al bekend is kun je in Exchange 2007 redelijk veel met Powershell voor elkaar krijgen. Sterker nog sommige dingen kun je alleen maar via Powershell doen.

Een van die dingen is meerdere gebruikers aanmaken via een CSV bestand, superhandig als je een groot aantal gebruikers aan moet maken. Je kan het zo gek niet bedenken of je kan het wel maken als je de informatie maar aanlevert in een CSV bestand.

We zouden natuurlijk elke keer het hele commando in kunnen tikken om de CSV uit te lezen en de gebruikers aan te maken maar waarom zouden we het niet doen met een Powershell script.

Een Powershell script kun je gewoon met Notepad maken, het enige waar je voor moet zorgen is dat je het opslaat met de extensie .ps1.

Onderstaand het script wat we gaan gebruiken:

Param(

[string] $MailboxTemplate,

[string] $CSVFile

)

$Temp = ConvertTo-SecureString P@ssw0rd -asPlainText -Force

$Template = Get-Mailbox “$MailboxTemplate”

Import-CSV $CSVFile | ForEach-Object -Process {New-Mailbox -Name $_.Name -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UPN -OrganizationalUnit $_.OU -Database “First Storage Group\Mailbox Database” -Password $Temp -TemplateInstance $Template}

Eerst zorgen we ervoor dat er een paar parameters worden opgegeven, deze hebben we later nodig wanneer we het script uitvoeren. In dit script zijn er 2 parameters:

  • $MailboxTemplate, de naam van de template-mailbox (string)
  • $CSVFile, de naam van het csv bestand (string)

Alle parameters kunnen opgegeven worden in string formaat behalve het wachtwoord. Het is namelijk niet mogelijk om een wachtwoord zomaar te gebruiken in een script. Het wachtwoord moet d.m.v. het volgende stuk script ingevoerd worden:

$Temp = ConvertTo-SecureString P@ssw0rd -asPlainText -Force

Hiermee geven we op dat we $Temp gelijk stellen aan de beveiligde string die volgt uit P@ssword

$Template = Get-Mailbox “$MailboxTemplate”

Vervolgens zorgen we ervoor dat $Template de waarde krijgt die met het commando meegegeven wordt als de parameter $MailboxTemplate. Dit is een mailbox die we eerst aanmaken en gebruiken als template.

Wanneer we alle parameters hebben opgegeven kunnen we het uiteindelijke commando opgeven waarmee we het CSV bestand gaan importeren CSV-import

Import-CSV $CSVFile | ForEach-Object -Process {New-Mailbox -Name $_.Name -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UPN -OrganizationalUnit $_.OU -Database “First Storage Group\Mailbox Database” -Password $Temp -TemplateInstance $Template}

Deze regel kunnen we in een aantal stukken verdelen:

  • Import-CSV $CSVFile, hiermee zorgen we ervoor dat het bestand wat opgegeven wordt als $CSVFile geimporteerd wordt
  • ForEach-Object -Process, dit commando zorgt ervoor dat elke nieuwe regel in het CSV bestand alle stappen tussen de acolades worden uitgevoerd.
  • {New-Mailbox -Name $_.Name -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UPN -OrganizationalUnit $_.OU -Database “First Storage Group\Mailbox Database” -Password $Temp -TemplateInstance $Template}, hiermee worden de parameters vervangen door de waarden uit het CSV bestand of de waarden die ingesteld worden in het script. In dit geval wordt de mailbox aangemaakt in de storage group First Storage Group in de database Mailbox Database.

Het script bestand dient opgeslagen te worden in de scripts directory, deze kun je vinden onder de installatie directory van Exchange 2007.

Nadat we het script hebben opgeslagen hebben we nog twee stappen te gaan:

  • het aanmaken van de template
  • het aanmaken van het CSV bestand

De template is eigenlijk redelijk eenvoudig, in principe maak je een standaard gebruiker aan welke je als template gaat gebruiken.

Het aanmaken van de template doen we via de Exchange Management Console, ik ga er vanuit dat je weet hoe je de eerste paar stappen doorloopt en begin dan ook in de wizard

We vullen voor zover mogelijk alle namen in, kies hierbij een handige naam bijvoorbeeld _template

Vervolgens drukken we op next

In het volgend scherm is het van belang dat je de juiste Mailbox Server kiest, deze wordt namelijk gebruikt voor alle gebruikers die gemaakt worden m.b.v. deze template. De Storage Group wordt in dit geval via het script meegegeven.

Wanneer de gebruiker is aangemaakt kun je als je dit wil nog de eigenschappen van de gebruiker opvragen en de tab-bladen Address and Phone en Organization invullen. Dit is optioneel aangezien je dit ook met je script kunt doen, hiervoor dient een extra stuk code toegevoegd te worden aan je Powershell script en dien je exta parameters op te geven in je CSV bestand.

Enkele waarden krijgt de nieuwe gebruiker dan automatisch mee waaronder: City en Country/Region, scheelt weer veel invul werk. Helaas gaan niet alle waarden mee, velden zoals Zip-Code en Street Address zijn daar een voorbeeld van.

In het geval dat je ook zoals bovenstaand de department opgeeft dien je misschien meerdere templates aan te maken. Dit omdat het voor zover ik heb kunnen vinden niet mogelijk is om deze waarde mee te geven met het new-mailbox commando.

Nu we de template mailbox hebben aangemaakt is het nog een kwestie van het CSV bestand aanmaken, dit kan via NotePad of Excel. Ik heb zelf een CSV’tje gemaakt in Notepad

Nu we alle voorbereidingen hebben getroffen is het slechts een kwestie van het script uitvoeren. Dit script dient uitgevoerd te worden vanuit de Exchange Management Shell:

CreateNewUser.ps1 -MailboxTemplate “_Template_Rotterdam” -CSVFile “c:\users.csv”

Als het script succesvol is uitgevoerd krijg je onderstaand te zien:

Uiteraard zijn na een refresh, indien je de Exchange Management Console open had staan, de gebruikers hier ook te zien.

Zoals beloofd hier nog een extra stukje script waarmee je de velden van Address and Phone en Organization kunt laten invullen:

|Set-User -Department $_.Department -Office $_.Office -Phone $_.Telephone -StreetAddress $_.Street -City $_.city -PostalCode $_.PostalCode -CountryOrRegion $_.CountryOrRegion

Het stukje tussen de accolades komt er dan als volgt uit te zien:

{New-Mailbox -Name $_.Name -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UPN -OrganizationalUnit $_.OU -Database “First Storage Group\Mailbox Database” -Password $Temp -TemplateInstance $Template |Set-User -Department $_.Department -Office $_.Office -Phone $_.Telephone -StreetAddress $_.Street -City $_.city -PostalCode $_.PostalCode -CountryOrRegion $_.CountryOrRegion}

Het CSV bestand dient uiteraard ook uitgebreid te worden met de waarden van de velden:

Name,FirstName,LastName,UPN,OU,Department,Office,Telephone,Street,PostalCode,City

Een gebruiker ziet er dan als volgt uit:

Pietje Puk,Pietje,Puk,Pietje.Puk@test.local,test.local/Rotterdam,IT,Rotterdam,010-1234567,Coolsingel 111,2332 ZZ,Rotterdam

Het uitvoeren van het script gaat op dezelfde manier:

CreateNewUser.ps1 -MailboxTemplate “_Template_Rotterdam” -CSVFile “c:\users.csv”

In de Exchange Management Shell is echter niet veel van de output te zien, hiervoor dien je in de Exchange Management Console te kijken:

Dit is het einde van deze tutorial een aardige lap dacht ik zo maar kan erg handig zijn als je veel gebruikers wilt aanmaken in Exchange 2007.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Reddit
  • Webnews
  • Y!GG
  • Ask
  • Live-MSN
  • Technorati
  • YahooMyWeb

One comment on “Gebruikers via CSV aanmaken

Geef een reactie

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>