Удаленное подключение к серверу Exchange/Office 365 с помощью PowerShell
В этой статье мы рассмотрим, как удаленно подключится к on-premises серверу Exchange или Office 365 (Exchange Online) из консоли PowerShell.
Удаленное подключение к Exchange из консоли PowerShell (без установки Exchange Management Tools)
Для управления on-premises Exchange (версии Exchange Server 2010, 2013, 2016 и 2019) используются командлеты из модуля Exchange Management Shell (устанавливается как часть Exchange management tools). Если у вас на компьютере не установлен модуль Exchange Management Shell, вы можете удаленно подключиться к серверу Exchange и импортировать командлеты с сервера в свою сессию локальную сессию PowerShell.
В Exchange Server удаленные подключения выполняются через отдельный виртуальный каталог IIS (Internet Information Services), который называется PowerShell. Для аутентфикации по-умолчанию используется Kerberos, а взаимодействие происходит через WinRM.
Совет. Обратите внимание, что некоторые командлеты EMS не поддерживаются полноценно через удаленную сессию PowerShell. Например, Get-ExchangeCertificate. Для его использования вам придется установить Exchange Management Shell на свой компьютер.
Прежде чем начать, убедитесь, что ваш локальный PowerShell разрешает запускать локальные PS скрипты (Execution Policy). Следующая команда разрешит запуск локальных скриптов для текущего пользователя.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Откройте на своем компьютере PowerShell консоль и выполните следующую команду:
$UserCredential = Get-Credential
Введите логин и пароль учетной записи, которую вы будете использовать для подключения к Exchange.
Создайте удаленную PowerShell сессию с вашим Exchange сервером:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://msk-exch1.winitpro.ru/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Обратите внимание, что для доступа к Web PowerShell используется
http
, а не
https
.
Проверьте, что сессию создана и имеет
State=Opened
:
Get-PSSession
Импортируйте удаленную сессиюPowerShell в свою локальную:
Import-PSSession $Session
Теперь вы сможете использовать все командлеты Exchange в своем локальном PowerShell сеансе.
Не забывайте корректно завершать удаленные PowerShell сессии. Если вы будете просто закрывать консоль Windows PowerShell без отключения сессии, вы можете исчерпать лимит сеансов удалённой среды PowerShell.
Для завершения сессии, выполните:
Remove-PSSession $Session
Проверьте, что запущенных сессий PowerShell не осталось:
Get-PSSession
Чтобы каждый раз при запуске консоли не выполнять командлеты импорта командлетов PowerShell с удаленного сервера, вы можете использовать профиль PowerShell.
Создайте файл профиля:
New-Item -Path $profile -ItemType file -force
Откройте созданный файл Microsoft.PowerShell_Profile.ps1 с помощью блокнота:
notepad $profile
Добавьте в файл команды подключения к Exchange и импорта командлетов из удаленного сеанса в локальную сессию PowerShell:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://msk-exch1.winitpro.ru/PowerShell/ -Authentication Kerberos -Credential (Get-Credential)
Import-PSSession $Session
Удаленное подключение к Exchange Online (Office 365) из Powershell
Похожим способом вы можете подключаться к своем тенанту Exchange Online (Office 365) для управления ящиками, переговорными комнатами, списками рассылки, и другими параметрами Office 365.
Рассмотрим, как удаленно подключится к Exchange Online из консоли PowerShell без установки модуля Microsoft Exchange Online PowerShell (EXO/ EXOv2) с помощью базовой аутентификации.
Сначала нужно разрешить запуск локальных скриптов:Set-ExecutionPolicy RemoteSigned
Запросить имя и пароль учетной записи с правами администратора Exchange Online.
$UserCredential = Get-Credential
Set-User -Identity [email protected] -RemotePowerShellEnabled $true
Теперь можно установить удаленную сессию PowerShell с Office 365:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic –AllowRedirection
New-PSSession : [outlook.office365.com] Connecting to remote server outlook.office365.com failed with the following error message : Access is denied. + CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed
В этом случае вам придется установить модуль Exchange Online PowerShell V2 (EXO V2):
Install-Module ExchangeOnlineManagement
Для подключения к Exchange Online в этом случае используется командлет:
Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true
Либо можно отключить MFA для аккаунта:
Set-MsolUser -UserPrincipalName [email protected] -StrongAuthenticationRequirements @()
Затем импортируйте удаленную сессию в свою консоль:
Import-PSSession $Session
Fail to create a runspace because you have exceeded the maximum number of connections allowed.
Теперь вы можете управлять ящиками Office 365.
Чтобы закрыть всея удаленные PowerShell сессии, выполните:
Get-PSSession | Remove-PSSession
Office 365
Удаленное подключение к серверу Exchange/Office 365 с помощью PowerShell