PowerShell это основное средство администрирования как on-premises организаций Exchange Server, так и облачного Exchange Online в Microsoft 365. В этой статье мы покажем, как установить PowerShell модуль Exchange Online PowerShell v2 (EXO V2) в Windows, как подключиться к вашем тенанту Exchange Online и управлять ящиками и другими почтовыми объектами в Micrtosoft 365.
Для установки модуля Exchange Online PowerShell в Windows нужна версия PowerShell 5.x (PowerShell Core поддерживается, начиная с версии модуля ExchangeOnlineManagement 2.0.4).
Настройки политики запуска скриптов PowerShell на компьютере должны разрешать запуск локальных PS файлов:
Set-ExecutionPolicy RemoteSigned
Установите и обновите модуль PowershellGet:
Install-Module PowershellGet -Force
Update-Module PowershellGet
Для установки модуля EXOv2 (ExchangeOnlineManagement) из галереи скриптов PowerShell для всех пользователей компьютера, выполните:
Install-Module -Name ExchangeOnlineManagement -Force -Scope AllUsers
Теперь модуль можно импортировать в сессию:
Import-Module ExchangeOnlineManagement
Проверьте, что модуль установлен. Также отображается его версия (2.0.5 в моем случае):
Get-Module ExchangeOnlineManagement
(Get-Module -ListAvailable -Name ExchangeOnlineManagement) -ne $null
Для обновления модуля EXOv2 используйте команду:
Update-Module ExchangeOnlineManagement
Для подключения к вашему тенанту Microsoft 365 с помощью модуля Exchange Online, исопльзуется командлет Connect-ExchangeOnline . Например, можно указать UPN пользователя с правами глобального администратора тенанта:
Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true
Укажите пароль пользователя и подтвердите вход через MFA (удобнее всего использовать приложение Microsoft Authenticator на смартфоне).
Connect-ExchangeOnline -Device
Сформированный URL и код нужно использовать для аутентификации на другом компьютере с браузером.
Или используйте параметр –InlineCredential для интерактивного ввода пароля в консоли.
Если у вашего аккаунта есть доступ к нескольким тенантам Azure, можно указать имя с помощью параметра DelegatedOrganization:
Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true -DelegatedOrganization remontkatest2.onmicrosoft.com
Если для аккаунта отключен Modern Authentication, можно подключится так:
$cred = Get-Credential
Connect-ExchangeOnline -Credential $cred -UserPrincipalName [email protected] -ShowProgress $true
Вы можете проверить, что в системе есть активное подключение к Exchange Online так:
Get-PSSession| ft –AutoSize
В нашем примере подключение к outlook.office365.com активно (State=Opened)
После завершения работы с Exchange Online не забывайте корректно закрывать свою сессию с помощью командлета Disconnect-ExchangeOnline. Дело в том, что Exchange Online поддерживает максимум 5 одновременных PowerShell сессий. Если вы попробуете открыть шестую сессию, появится ошибка:
Fail to create a runspace because you have exceeded the maximum number of connections allowed.
Следующий код можно использовать в ваших PowerShell скриптах для проверки, что подключение к Exchange Online через модуль EXOv2 уже активно. Это позволит избежать создания лишних удаленных PowerShell сессий к Microsoft 365.
$psSessions = Get-PSSession | Select-Object -Property State, Name
If (((@($psSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
Connect-ExchangeOnline -UserPrincipalName [email protected] }
https://remontka.com/udalennoe-podklyuchenie-k-exchange-office-365-iz-powershell/
Список доступных командлетов в модуле EXO v2 можно вывести командой:
Get-Command -Module ExchangeOnlineManagement
На данный момент доступно 23 командлета:
Get-EXOMailbox
, вместо Get-MailboxPermission — Get-EXOMailboxPermission
и т.д. Поэтому, если у вас остались скрипты для EXOv1, придется внимательно их переписать под EXOv2. Можно вывести список ящиков в вашем тенанте Exchange или информацию о конкретном ящике:
Get-EXOMailbox |ft
Get-EXOMailbox kbuldogov
Вывести пользователей, у которых разрешен POP и IMAP доступ:
Get-EXOCasMailbox -PropertySets Imap,pop
Вывести размер всех ящиков:
Get-EXOMailbox | Get-EXOMailboxStatistics
Размеры всех общих ящиков:
Get-EXOMailbox | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"} | Get-EXOMailboxStatistics
Обратите внимание, что в модуле ExchangeOnlineManagement нет, например, командлета Set-Mailbox. Дело в том, что остальные доступные командлеты Exchange Online (более 750) импортируются в вашу PowerShell сессию после подключения к тенанту. Сначала вам нужно получить имя сессии:
Get-PSSession| select ConfigurationName,CurrentModuleName
По сгенерированному имени сессии можно получить список доступных командлетов:
Get-Command -Module tmp_4mpa2wak.dga
Т.е. чтобы изменить SMTP адрес пользователя, можно использовать команду:
Get-EXOMailbox kbuldogov | Set-Mailbox -EmailAddresses @{Add='kbuldogov2 @remontka.com'}
Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…
Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…
Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…
The AC power adapter wattage and type cannot be determined — причины и решение При…
Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…
Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…