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.