Як підключитися до кількох служб Office 365 за допомогою PowerShell

Останнє оновлення: 29/03/2026
Автор: Ісаак
  • Перед використанням PowerShell важливо підготувати середовище (версії Windows, PowerShell, .NET та політики виконання) та призначити відповідні ролі в Microsoft 365.
  • Сучасні модулі (ExchangeOnlineManagement, Microsoft.Graph, SharePoint Online та MicrosoftTeams) дозволяють підключатися до кількох служб в одному сеансі за допомогою сучасної автентифікації та багатофакторної автентифікації.
  • Правильне використання сертифікатів, керованих ідентифікаційних даних та явного закриття сеансу підвищує безпеку, уникає обмежень сеансу та сприяє автоматизації без попереднього налаштування.
  • Більшість помилок підключення вирішуються шляхом перевірки встановлених модулів, дозволів RBAC, сумісності TLS та налаштувань проксі-сервера або брандмауера.

Підключення до кількох служб Office 365 за допомогою PowerShell

Якщо ви щодня керуєте Microsoft 365/Office 365, рано чи пізно ви виявите, що робити це лише з центру адміністрування є вузьким місцем. PowerShell стає швейцарським армійським ножем керувати поштовими скриньками, користувачами, сайтами SharePoint, Teams або політиками безпеки масовим та автоматизованим способом.

Проблема полягає в тому, що багато адміністраторів одночасно мають відкрито чотири або п’ять вікон PowerShell: одне для Exchange Online, одне для SharePoint Online, одне для Teams, одне для Microsoft Graph… і так далі. Такий підхід незручний, важкий у дотриманні та неефективнийУ цьому посібнику ви дізнаєтесь, як підготувати середовище та як підключитися до запускати кілька служб Office 365 з одного або кількох сеансів PowerShellвикористання сучасних модулів та найкращих практик безпеки.

Передумови та підготовка середовища

Перш ніж почати вводити команди на кшталт «завтра не буде», варто переконатися, що посада, з якої ви керуєте, відповідає певним вимогам. мінімальні вимоги до системи, мережі та безпекиЯкщо ви пропустите цю частину, ви отримаєте загадкові помилки, такі як «командлет не розпізнано», «не вдається завантажити файл» або проблеми з автентифікацією.

Щодо операційної системиВам потрібна 64-розрядна версія Windows. Підтримувані операційні системи включають, але не обмежуються:

  • Windows 11 та Windows 10
  • Windows 8/8.1 та Windows 7 з пакетом оновлень 1 (SP1)
  • Windows Server 2012, 2012 R2, 2016, 2019 та 2022

На цих пристроях рекомендована версія PowerShell 5.1 або PowerShell 7+Якщо ви використовуєте Windows PowerShell 5.1, переконайтеся, що у вас інстальовано .NET Framework 4.7.2 або новішої версії та оновлено модуль PowerShellGet, оскільки саме це дозволяє Встановлення сучасних модулів з галереї PowerShell з дуже зручним Install-Module.

На мережевому рівні, Ви повинні мати доступ HTTPS (TCP 443) до доменів Microsoft 365, таких як:

  • outlook.office365.com (Обмін онлайн)
  • login.microsoftonline.com (автентифікація)
  • graph.microsoft.com (Microsoft Graph)
  • *.office365.com, *.microsoft.com у більш обмежених сценаріях

Якщо ви перебуваєте в середовищі з корпоративним брандмауером або проксі-сервером, зверніться до команді мережевих ці кінцеві точки не фільтруються. Простий Test-NetConnection outlook.office365.com -Port 443 Це допоможе вам перевірити базове підключення.

Ще один стовп – це політика виконання скриптівБагато модулів завантажують локальні або віддалені скрипти, і якщо політика занадто обмежувальна, вони будуть заблоковані.

  • Get-ExecutionPolicy щоб побачити поточне значення.
  • RemoteSigned Це найпоширеніший баланс: він дозволяє непідписані локальні скрипти та вимагає підписів для скриптів, завантажених з Інтернету.

Щоб встановити це лише для поточного користувача:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

У деяких середовищах перевага надається AllSigned (усі підписані) або, у дуже специфічних випадках доказів, Необмежений o Обхід на рівні процесу. Головне, щоб ви зрозуміли, що без коригування цього, Ви не зможете імпортувати сеанси або запускати скрипти підключення.

Роль адміністратора та необхідні дозволи

Незалежно від того, наскільки добре налаштоване ваше середовище, якщо обліковий запис, до якого ви підключаєтеся, не має дозволів, Ви отримуватимете помилки "Доступ заборонено" одна за одною.Щоб керувати Microsoft 365 глобально за допомогою PowerShell, вам потрібна принаймні одна з цих ролей:

  • Глобальний адміністратор, якщо ви хочете контролювати практично все.
  • Адміністратор біржі для розділу пошти та поштових скриньок.
  • Інші конкретні ролі: адміністратор безпеки, адміністратор команд тощо.
  Покращте свій файловий провідник за допомогою Directory Opus або XYplorer

Exchange Online використовує RBAC, тому ваш обліковий запис має бути в таких групах, як Управління організацією o Керування одержувачами мати можливість створювати та змінювати поштові скриньки, правила тощо. А якщо ви збираєтеся використовувати Microsoft Graph, Вам потрібно буде погодитися на відповідні області застосування, наприклад:

  • User.Read.All перерахувати користувачів та зчитати основні дані.
  • Група.Читання.Запис.Все керувати групами та, серед іншого, командами.

Також майте на увазі, що ви можете Увімкнення або вимкнення доступу до Exchange Online PowerShell для кожного користувача за допомогою командлетів, таких як:

Це дуже корисно для зміцнення поверхні атаки: Не всім потрібно мати можливість відкривати сеанс Exchange Online PowerShellнавіть якщо в нього є поштова скринька.

Встановлення ключових модулів для Office 365/Microsoft 365

Щоб підключитися до різних служб сучасним способом, вам більше не потрібні старі інсталятори MSI для «Входу в онлайн-служби Microsoft», Lync Online тощо. Більшість поточних модулів встановлюються безпосередньо з галереї PowerShell.що значно спрощує обслуговування та оновлення.

Основні будівельні блоки, які вам слід було встановити:

  • ExchangeOnlineManagementМодуль EXO V2 для Exchange Online (основний командлет: Connect-ExchangeOnline).
  • Microsoft.Graph і за бажанням Microsoft.Graph.Beta- Офіційний пакет розробки Microsoft Graph SDK для PowerShell.
  • Microsoft.Online.SharePoint.PowerShellАдміністрування SharePoint Online.
  • Microsoft TeamsКерування Microsoft Teams через PowerShell.

Типова інсталяція (запуск PowerShell від імені адміністратора):

Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber
Install-Module -Name Microsoft.Graph -Scope CurrentUser
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Force
Install-Module -Name MicrosoftTeams -Force

Вибір - Сила Це примусово виконує встановлення або оновлення, водночас -ДозволитиКлобер Це дозволяє вам перевизначити командлети з інших модулів, якщо існує конфлікт. Після цього ви можете перевірити кожен модуль за допомогою:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Якщо вам потрібна сумісність зі старими скриптами, ви також можете зберегти класичні модулі, такі як MSOnline o AzureADАле рекомендація Microsoft полягає в переході до Microsoft Graph PowerShellщо є майбутнім управління ідентифікацією та ресурсами.

Підключення до кількох служб в одному сеансі PowerShell

Ідеальна мета — працювати з однієї консолі, щоб уникнути перемикання між вікнами. Гарна новина полягає в тому, що сьогодні це можна зробити чудово за умови, що ви завантажите відповідні модулі та зрозумієте, як працює кожен командлет підключення.

Як загальну схему, ви можете дотримуватися такої послідовності:

  1. Запустіть PowerShell (бажано 64-розрядну версію, з підвищеними правами, якщо ви збираєтеся змінювати ExecutionPolicy).
  2. Створіть об'єкт credentials, якщо модуль його приймає (Get-Credential).
  3. Завантажте модулі, які ви збираєтеся використовувати з Import-Module.
  4. Запустіть командлети підключення: Exchange, Graph, SharePoint, Teams…

Простий приклад інтерактивного входу для кількох сервісів:

$credential = Get-Credential
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -ShowProgress:$true
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
$orgName = "tuempresa" # subdominio de tutenant.onmicrosoft.com
Connect-SPOService -Url https://$orgName-admin.sharepoint.com -Credential $credential
Import-Module MicrosoftTeams
Connect-MicrosoftTeams -Credential $credential

Тим часом, для Microsoft Graph автентифікація використовує інший підхід. Ви не можете передавати облікові дані безпосередньо командлету.Замість цього відкривається інтерактивний потік на основі OAuth 2.0:

Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"

З’явиться запит на вхід у браузер і надання дозволу для цих областей. Після прийняття сеанс Graph можна буде використовувати в тому ж вікні PowerShell, яке вже підключено до Exchange, SharePoint і Teams.

Завдяки такому підходу ви маєте все необхідне централізовано в одному сеансі керувати обліковими записами, поштовими скриньками, сайтами, командами та налаштуваннями безпекине відкриваючи вкладки, ніби завтрашнього дня не буде.

Використання Microsoft Graph PowerShell в організації

Microsoft Graph PowerShell – це «новий стандарт» для доступу до рівня API Microsoft 365. За допомогою одного SDK ви можете керувати користувачами, групами, командами, пристроями, звітами тощо. У PowerShell цей інтерфейс схожий на будь-який інший модуль, але з нюансами областей застосування та делегованої моделі проти моделі, орієнтованої лише на програму.

  Як перевірити стан вашого SSD-накопителя за допомогою CrystalDiskInfo

Для інтерактивної роботи зазвичай використовується делегований доступВи входите як користувач (зазвичай адміністратор) і даєте згоду від імені цього користувача:

Install-Module Microsoft.Graph -Scope CurrentUser
Import-Module Microsoft.Graph
Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"

За допомогою цих областей ви можете, наприклад:

  • Список користувачів щоб знайти ідентифікатор користувача, який увійшов у систему.
  • Дивіться команди, до складу яких він входить (приєднався до команд).
  • Список каналів конкретної команди.
  • Надіслати повідомлення до каналу Teams зі скриптів.

Для сценаріїв без нагляду (заплановані завдання, конвеєри CI/CD, нічна автоматизація…) найкращим варіантом є перехід на автентифікація лише для програм з реєстрацією програми в Microsoft Entra ID та сертифікатом X.509. У такому разі програма автентифікується за допомогою AppId, TenantId та сертифікатІ вам не потрібна взаємодія з людиною, що дозволяє вам виконувати фонові завдання контрольованим чином.

Сучасне підключення до Exchange Online та інших середовищ

Роками я був підключений до Exchange Online за допомогою New-PSSession та базову автентифікацію. Цей маршрут офіційно закрито з жовтня 2022 року.Тепер усе відбувається через модуль ExchangeOnlineManagement, який використовує сучасну автентифікацію (OAuth 2.0) та підтримує MFA, сертифікати, керовані ідентифікаційні дані тощо.

Основний шаблон для адміністраторів-людей такий:

Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName [email protected]

Відкриється вікно входу, ви вводите свій пароль, вирішуєте MFA, і все готово. Звідти ви можете використовувати такі командлети, як Get-EXOMailbox, Get-EXOMailboxStatistics, New-Mailbox, Set-Mailbox o Remove-Mailbox без більшого.

Для автоматизації без браузера у вас є кілька варіантів. автентифікація на основі сертифікатів o Керовані ідентифікатори в Лазурі:

Connect-ExchangeOnline -ManagedIdentity -Organization tudominio.onmicrosoft.com

Або ж, використовуючи зареєстровану програму та сертифікат:

Connect-ExchangeOnline -AppId "APP-ID" -Organization "tudominio.onmicrosoft.com" -CertificateThumbprint "THUMBPRINT"

Цей тип підключення ідеально підходить, коли потрібно запускати повторювані скрипти з автоматизації Azure, функцій Azure або віртуальної машини керованої ідентифікації: Немає паролів у відкритому тексті, а життєвий цикл сертифіката добре контрольований.

Підключення до SharePoint Online та Teams з PowerShell

Щойно ви налаштуєте електронну пошту та ідентифікацію, вам, ймовірно, знадобиться керувати сайтами SharePoint і командами Teams за допомогою скриптів. Процес дуже схожий на той, що ви бачили в Exchange; відрізняються лише модулі та командлети.

в SharePoint Online Вам потрібно знати URL-адресу адміністратора вашого клієнта, щось на кшталт цієї: https://tuempresa-admin.sharepoint.comБазове з'єднання таке:

Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
$cred = Get-Credential
Connect-SPOService -Url "https://tuempresa-admin.sharepoint.com" -Credential $cred

Звідти у вашому розпорядженні є командлети, такі як Get-SPOSite для переліку колекцій сайтів, команди для застосування політик, керування сховищем тощо. Ви можете повторно використовувати той самий об'єкт облікових даних для інших службспрощення сценарію.

У випадку Microsoft TeamsМодуль також підтримує сучасну автентифікацію та багатофакторну автентифікацію. Типовий робочий процес буде таким:

Import-Module MicrosoftTeams
Connect-MicrosoftTeams -Credential $cred

Або ж ви можете дозволити йому відкривати діалогове вікно входу без явного передавання облікових даних. Після входу ключові командлети, такі як Get-Team, New-Team o Get-TeamUser Вони дозволяють автоматизувати створення команди, керування учасниками, налаштування каналів тощо, часто в поєднанні з Microsoft Graph для складніших сценаріїв.

Безпечне керування сеансами та відключення

PowerShell — це не просто підключив і працює: Відкриті сесії також потребують належного управління.Наприклад, Exchange Online встановлює обмеження приблизно на 3 одночасні сеанси на користувача, і якщо ви залишите їх відкритими, ви зіткнетеся з відомою помилкою «перевищено максимальну кількість сеансів».

Рекомендована практика полягає в явно закривати сесії Коли ви завершуєте свої завдання, замість простого закриття вікна. Для Exchange Online з EXO V2:

  Використання Word як редактора субтитрів для відео: повний посібник

Disconnect-ExchangeOnline -Confirm:$false

Якщо ви також створили віддалені сеанси за допомогою New-PSSession для інших сервісів (або для сумісності зі старими скриптами) також рекомендується їх очистити:

Get-PSSession | Remove-PSSession

SharePoint і Teams мають власні командлети відключення:

Disconnect-SPOService
Disconnect-MicrosoftTeams

Такий підхід дозволяє уникнути осиротілих сесій на серверах, звільнити ресурси та зменшити ризики безпеки. Також, якщо у вас довгі скрипти, розгляньте… запускати їх в одному сеансі та контролювати час очікування замість створення випадкових, циклічних з'єднань та розривів.

Виправлення неполадок поширеного підключення

Незалежно від того, наскільки ретельно ви це налаштуєте, ви майже напевно, що в якийсь момент з'явиться дивне повідомлення. Більшість помилок підключення до служб Office 365 за допомогою PowerShell поділяються на кілька типових груп.:

Коли ви бачите повідомлення на кшталт «Термін «Connect-ExchangeOnline» не розпізнано», це зазвичай означає, що Модуль не встановлено або імпортовано неправильноВи можете перевірити це за допомогою:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Якщо він не відображається, перевстановіть його з галереї PowerShell. Якщо він відображається, але не завантажується, Переконайтеся, що ви не використовуєте застарілу або 32-розрядну версію PowerShell. який не підтримує цей модуль.

Помилки автентифікації («Доступ заборонено», «У вас недостатньо прав») зазвичай виникають через:

  • Недостатньо ролей у Microsoft 365 (брак адміністратора Exchange, глобального адміністратора тощо).
  • Невиконані вимоги багатофакторної автентифікації, вимкнений пароль програми або політики умовного доступу.
  • Пошкоджені пошукові облікові дані у диспетчері облікових даних Windows.

Рішенням тут є перегляд ролей на порталі адміністрування, перевірка, чи є в організації правила умовного доступу, що блокують PowerShell, і, за необхідності, видалити збережені облікові дані і ще раз перевірте процес входу.

Проблеми з TLS або проксі-серверами також є поширеними: повідомлення на кшталт «Базове з’єднання закрито» або «Неможливо підключитися до віддаленого сервера» вказують на те, що TLS 1.2 не використовується або брандмауер блокує трафік. Переконайтеся, що ви:

  • Оновіть .NET (4.6.2 або вище).
  • За потреби примусово встановіть TLS 1.2 з PowerShell.
  • Перевірте, чи проксі-сервер дозволяє трафік до кінцевих точок Microsoft.

Зрештою, якщо у вас встановлено кілька модулів (MSOnline, AzureAD, ExchangeOnlineManagement, старіші версії EXO тощо), вони можуть відображатися конфлікти командлетів або версії. У такому разі:

  • Список модулів з Get-Module -ListAvailable.
  • Дізнатися, до якого модуля належить командлет Get-Command NombreCmdlet.
  • Явно імпортуйте правильну версію за допомогою Import-Module -RequiredVersion.
  • Видаліть старі модулі, які вам більше не потрібні, за допомогою Uninstall-Module.

Завдяки цим рекомендаціям більшість проблем вирішуються без необхідності зводити себе з розуму читанням нескінченних журналів.

Опанування підключення до кількох служб Office 365 за допомогою PowerShell дозволяє перейти від внесення змін вручну на порталі до Автоматизуйте масивні завдання, застосовуйте розширені конфігурації, які навіть не відображаються в графічному інтерфейсі, та підтримуйте набагато точніший контроль над безпекою та доступом.Правильна підготовка середовища (версій, модулів, дозволів та політик виконання), використання сучасної автентифікації за допомогою MFA та сертифікатів, централізація підключень в один або кілька сеансів та керування життєвим циклом сеансів зроблять вашу щоденну роботу адміністратора Microsoft 365 набагато плавнішою та, перш за все, масштабованішою.