Powershell KungFu – Office 365 Konten / Ressourcen anlegen

Herstellen einer Powershell Verbindung zu Office 365 / Exchange Online

Als erstes müssen wir eine Session zu Exchange Online herstellen, danach können wir diese Session importieren, und wenn wir unsere Arbeit getan haben, wieder entfernen. Als Credential Daten, muss ein Account (Exchange Online / Office 365) verwendet werden, welcher die entsprechenden Rechte besitzt, die gewünschten Arbeiten durchzuführen.

$UserCredential = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

Import-PSSession $Session

Remove-PSSession $Session

Bestehende Ressource auflisten

Es wird bei den Ressourcenkonten zwischen Raum und Gerät unterschieden. Mit den folgenden Abfragen, können die bestehenden Ressourcenkonten entsprechend ihrem Ressourcentyp aufgelistet werden. Ressourcenkonten in Office 365 sind kostenlos.

Get-Mailbox | Where{$_.ResourceType -eq "Room"}

Get-Mailbox | Where{$_.ResourceType -eq "Equipment"}

Get-Mailbox | Where{($_.ResourceType -eq "Room") -or ($_.ResourceType -eq "Equipment")}

Erstellen neuer Ressourcen Konten

Beginnen wir mit dem simplen anlegen eines Raum und eines Geräte Postfaches ohne weitergehende Einstellungen. Dies kann wie in folgendem Beispiel erfolgen.

New-Mailbox -Name "Testraum1" -Room

New-Mailbox -Name "Geraet1" -Equipment

Massenbearbeitung / Datenquelle CSV

Da für die Erstellung eines einzelnen Postfaches der Weg über die Powershell gegenüber der WebGUI keinen immensen Vorteil bietet, interessiert uns vor allen Dingen, die Massenerstellung von Postfächern.

Wir bleiben bei unserem Beispiel der Ressourcenpostfächer und gehen davon aus, dass wir 1-n Postfächer nach folgendem Muster erstellen müssen.

NameDisplayName
EmailAddresses
Type
Projektraum1
Projektraum1
Projektraum1@m-co.ch
Room
Projektraum2
Projektraum2
Projektraum2@m-co.ch
Room
Projektraum3
Projektraum3
Projektraum3@m-co.ch
Room

In ein CSV File verpackt sieht unsere CSV Datenquelle wie folgt aus.

Wir empfehlen euch die CSV Datei im Unicode Format abzuspeichern.


Name; DisplayName; EmailAddresses; Type

Projektraum1; Projektraum1; Projektraum1@m-co.ch; Room

Projektraum2; Projektraum2; Projektraum2@m-co.ch; Room

Projektraum3; Projektraum3; Projektraum3@m-co.ch; Room


Benennung der Beispiel CSV Datei für die weitere Verwendung: room.csv

Import CSV in Powershell

Um die eben erstellte CSV Datei in Powershell zu importieren kann folgender Code verwendet werden.

$Data = import-csv -Delimeter ";" -Path .\room.csv

<# Beginn Kommentarblock Ausgabebeschreibung

Der Aufruf von $Data wirft dann folgende Daten aus.

Name DisplayName EmailAddresses Type

---- ----------- -------------- ----

Projektraum1 Projektraum1 Projektraum1@m-co.ch Room

Projektraum2 Projektraum2 Projektraum2@m-co.ch Room

Projektraum3 Projektraum3 Projektraum3@m-co.ch Room

Mögliche Abfragen wären nun

$Data[1]

Name DisplayName EmailAddresses

---- ----------- --------------

Projektraum2 Projektraum2 Projektraum2@m-co.ch

$Data.Name

Projektraum1

Projektraum2

Projektraum3

$Data.DisplayName[1]

Projektraum2

Ende Kommentarblock Ausgabebeschreibung #>

Abarbeitung der Ressourcen-Postfach-Erstellung

Im folgenden werden die in $Data gespeicherten Daten zur Abarbeitung der Postfacherstellung verwendet. Über den "foreach" Befehl wird jeder Datensatz einzeln abgearbeitet. Über die Abfrage des Postfach Type, erfolgt die Unterscheidung ob es ein Raum oder ein Equipment Postfach werden soll. Der folgende Code enthält keinerlei Errorhandling, oder Abfrage ob ein Postfach schon vorhanden ist.

foreach($Box in $Data){

If($Box.Type -eq "Room"){

New-Mailbox -Name $Box.Name -DisplayName $Box.DisplayName -Room

}ElseIf($Box.Type -eq "Equipment"){

New-Mailbox -Name $Box.Name -DisplayName $Box.DisplayName -Equipment

}

}

Die e-Mail Adresse(n), die Primäre e-Mail Adresse

Bei der Erstellung des Ressourcen Kontos wird anhand des gewählten Namens, automatisch eine e-Mail Adresse vergeben.

Diese Adresse kann der gewünschten entsprechen, muss es aber nicht. Genauso kann es gewünscht sein, dass mehrere e-Mail Adressen einem Konto hinterlegt werden.

Im nächsten Codeblock schauen wir also mal, wie wir auf die Werte für e-Mail Adresse(n) und die Primäre Adresse zugreifen können.

$Mailbox = Get-Mailbox Projektraum6 -ResultSize Unlimited

$Mailbox

# Die Abfrage der Variable $Mailbox ergibt

# Name Alias ServerName ProhibitSendQuota

# ---- ----- ---------- -----------------

# Projektraum6 Projektraum6 vi1pr0301mb1951 99 GB (106,300,440,576 bytes)

$Mailbox.PrimarySmtpAddress

# Der Zugriff auf den Wert PrimarySmtpAddress der Variable $Mailbox ergibt

# Projektraum6@M-Co.ch

# Nun kann einfach der PrimarySmtpAddress Wert mit dem gewünschten Wert des CSV Importes verglichen werden.

$Mailbox.PrimarySmtpAddress -like $Box.EmailAddresses

# In unserem Beispiel hier wäre das Ergebnis

# True

# Sollte eine andere Email Adresse, oder gar mehrere gewünscht sein, so lässt sich dies bewerkstelligen.

# Die erste Email Adresse wird zur Primary.

# Set-Mailbox -Identity Projektraum6 -EmailAddresses SMTP:erlen@m-co.ch,Projektraum6@m-co.ch

# Das Beispiel ergäbe beim Abrufen mit Get-Mailbox Projektraum6 | select EmailAddresses, PrimarySmtpAddress

# EmailAddresses : {smtp:Projektraum6@m-co.ch, SMTP:erlen@m-co.ch}

# PrimarySmtpAddress : erlen@m-co.ch