У цій статті ми розглянемо, як віддалено підключиться до on-premises сервера Exchange або Office 365 (Exchange Online) з консолі PowerShell.

  • Віддалене підключення до Exchange з консолі PowerShell (без установки Exchange Management Tools)
  • Віддалене підключення до Exchange Online (Office 365) з 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.

обліковий запис з правами адміністратора в exchnage

Створіть віддалену 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

New-PSSession Microsoft.Exchange - віддалене підключення до on-prem exchange з powershell

Імпорт віддалену сессіюPowerShell в свою локальну:

Import-PSSession $Session

Import-PSSession $ Session - імпорт сесії з віддаленого сервера exchange в powershell

Тепер ви зможете використовувати всі командлети 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

створити профіль powershell для автоматичного запуску команда при запуску консолі

Віддалене підключення до 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

Для даного користувача Azure має бути попередньо дозволено віддалене підключення через PowerShell:

Set-User -Identity dmitriykb@winitpro.ru -RemotePowerShellEnabled $true

Тепер можна встановити віддалену сесію PowerShell з Office 365:

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

Якщо для вашого облікового запису включена мультифакторна аутентифікація (Multi-Factor Authentication -MFA рекомендується Microsoft для всіх акаунтів адміністраторів), то при підключенні через New-PSSession з’явиться помилка:

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 dmitriykb@winitpro.ru -ShowProgress $true

Або можна відключити MFA для аккаунта:

Set-MsolUser -UserPrincipalName dmitriykb@winitpro.ru -StrongAuthenticationRequirements @()

Потім імпортуйте віддалену сесію в свою консоль:

Import-PSSession $Session

віддалене підключення до exchnage online (office 365) з powershell

Максимально кількість віддалених PowerShell підключень до організації Exchange Online обмежено трьома сесіями. При перевищенні з’явиться помилка:

Fail to create a runspace because you have exceeded the maximum number of connections allowed.

Тепер ви можете управляти ящиками Office 365.

Щоб закрити всієї віддалені PowerShell сесії, виконайте:

Get-PSSession | Remove-PSSession

Leave a Reply

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