Exchange-Cmdlets in Powershell-Scripten nutzen
Wenn Sie Exchange 2013 oder 2016 per Powershell remote administrieren wollen, ohne sich auf den Exchange-Server per Powershell Remoting zu verbinden, oder wenn Sie Scripte von einer Management-Maschine aus starten wollen, brauchen Sie die Exchange-Snapins. Diese müssen Sie von den Exchange-Quellen nachinstallieren. Um die Installation starten zu können, müssen Sie allerdings eine Reihe von Software-Komponenten installiert haben. Am einfachsten geht dies über den Powershell-Befehl "Enable-WindowsoptionalFeature" auf dem Client bzw. Install-WindowsFeature auf dem Server:
Enable-WindowsOptionalFeature -Name IIS-WebServerRolead,IIS-WebServerManagementTools,IIS-IIS6ManagementCompatibility,IIS-Metabase,IIS-ManagementConsole,IIS-LegacySnapIn
Danach können Sie (für Exchange 2013) einfach über das Setup die automatisiert Installation der Exchange Management-Shell aufrufen:
Setup.exe /Role:ManagementTools /IAcceptExchangeServerLicenseTerms
Für die Installation können Sie einfach das aktuellste Exchange CU (Cumulative Update) nutzen, da das CU die komplette Exchange-Installation beinhaltet.
Um die Exchange-Konsole zu starten, können nun die Exchange Management Shell starten. Die EMS startet automatisch die Powershell-Erweiterungen, die Exchange nach wie vor als Snap-Ins zur Verfügung stellt. Wenn Sie Exchange-Cmdlets aus einer bestehenden Powershell-Sitzung starten möchten, können Sie die Cmdlets einfach importieren, indem Sie das Script RemoteExchange.ps1 starten, dass sich im Exchange-Ordner befindet:
. 'C:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto -ClientApplication:ManagementShell
Der Punkt vor dem Script-Pfad ist dabei relevant, denn er startet das Script dot-Sourced, was bedeutet, dass alle im Skript ausgeführten Befehle global gestartet werden. Wenn Sie den Punkt weglassen, sind alle Änderungen des Skripts nach Beendigung des Skripts wieder verschwunden. Connect-Exchangeserver verbindet dann Ihre Konsole mit Ihrem Exchange.
Eine weitere Alternative ist es, die Snap-Ins manuell nachzuladen.
$Snapins = "Microsoft.Exchange.Management.PowerShell.E2010","Microsoft.Exchange.Management.PowerShell.Setup","Microsoft.Exchange.Management.PowerShell.SnapIn","Microsoft.Exchange.Management.Powershell.Support"
Add-PSSnapin -Name $Snapins
Diese Variante wird von Microsoft allerdings nicht supported. Sie führt u.a. dazu, dass Cmdlets wie Search-Mailbox direkt geladen werden, auch wenn der Benutzer kein Recht hat, die Mailboxen zu durchsuchen.
Links
Connecting to Exchange 2010 with PowerShell
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
Comments