Почему командлеты Exchange Online на основе PowerShell часто терпят неудачу?
Центр администрирования Exchange позволяет выполнять основные задачи управления Exchange Online. Однако расширенные или крупномасштабные операции управления иногда требуют от администраторов углубленного изучения PowerShell. Более того, администраторы Exchange Online часто обнаруживают, что командлеты PowerShell, которые им необходимо использовать для управления Exchange Online, просто не работают. Когда это происходит, это почти всегда вызвано недостаточными разрешениями.
Итак, в этой статье я покажу вам, как определить, есть ли у вас права, необходимые для управления Exchange Online. Без дальнейших церемоний, давайте начнем.
Проверка ваших разрешений
Оценка отдельных разрешений — это хорошее место для начала, если у вас возникают проблемы со сбоем командлетов в Exchange Online. Чтобы уточнить, если вы подозреваете, что вам не хватает необходимых разрешений, важно взглянуть на назначения ролей вашей учетной записи.
Назначение ролей
Чтобы узнать, какие роли у вас есть, введите следующую команду:
При выполнении этой команды замените <user> идентификатором пользователя Microsoft 365, назначения ролей которого вы хотите проверить. Вы можете увидеть пример этой команды и ее вывод на снимке экрана ниже:

Это очень много ролей! Итак, как вы можете проверить конкретный?
Как проверить конкретную роль
На скриншоте выше вы можете видеть, что моей учетной записи назначено много ролей. В этой ситуации может быть проще проверить, у кого есть доступ к определенной роли, чем пытаться найти ее в огромном списке. К счастью, Microsoft упрощает это. Вам просто нужно знать точное имя роли, которую вы хотите проверить. Вот как выглядит базовая структура команды:
Предположим, например, что я хотел посмотреть, у кого в моей организации есть роль «Сброс пароля». Для этого я бы использовал приведенную выше команду, но заменил <имя роли> на «Сбросить пароль». Результирующая команда будет:
Глядя на скриншот ниже, вы можете видеть, что после запуска этой команды мне предоставляется список двух пользователей с ролью «Сброс пароля».

Подумайте, как такая оценка назначений ролей может быть полезна в случае сбоя командлетов PowerShell. В этом случае, если у администратора возникли проблемы со сбросом пароля, вы можете проверить, назначена ли ему роль «Сброс пароля».
Хотя может быть полезно проверить отдельные назначения ролей, чтобы узнать, есть ли у пользователя необходимые разрешения для запуска командлета, вы также можете сделать обратное.
Как проверить разрешения, необходимые для запуска командлета
Если у администратора возникают проблемы с запуском командлета PowerShell, вы можете проверить, какие разрешения ему необходимы для его запуска. Сделав это, вы можете просто сравнить требуемые разрешения с теми, которые у них есть в настоящее время.
Вам потребуется ввести две команды, чтобы проверить разрешения, необходимые для запуска командлета. Вот основная структура команды:
Первый командлет создает удаленный сеанс PowerShell, в котором можно оценить указанный командлет. Второй командлет анализирует возвращенные данные и отображает имя роли, способ назначения роли и кому она назначается.
Мы можем увидеть, как это работает на примере. Допустим, у администратора возникли проблемы с использованием командлета New-Mailbox для создания нового почтового ящика в Exchange Online. В этой ситуации можно использовать приведенную выше структуру команды для оценки командлета New-Mailbox:

Выполнение этой команды дает следующий результат, как показано на снимке экрана выше. Теперь вы можете увидеть разрешения, необходимые для запуска командлета New-Mailbox. Это так просто!
Давай сейчас закончим, хорошо?
Нижняя линия
В заключение, если администратор Exchange Online не может выполнить задачу управления с помощью PowerShell, скорее всего, это связано с тем, что у него недостаточно прав. В этом случае вы можете проверить, какие роли имеют разрешение на использование рассматриваемого командлета. Вы также можете проверить назначения ролей администратора, чтобы узнать, назначены ли ему вспомогательные роли. Я надеюсь, что эта статья хоть как-то помогла вам. Не стесняйтесь обращаться к нему в будущем, если вам это нужно.
У вас есть дополнительные вопросы о PowerShell или Exchange Online? Ознакомьтесь с разделами часто задаваемых вопросов и ресурсов ниже!
Часто задаваемые вопросы
Могу ли я оценить командлет, когда кто-то использует его в реальном мире, включая его параметры?
Командлет Get-ManagementRole поддерживает использование переключателя CmdletParameters. Поэтому просто укажите этот переключатель после имени оцениваемого командлета и добавьте любые параметры, которые хотите протестировать. Вы также должны отделять параметры друг от друга с помощью запятой. Между прочим, вы увидите роль, поддерживающую командлет, только если эта роль поддерживает командлет и все указанные параметры.
Почему командлет Get-ManagementRole не вернул никаких результатов?
Командлет Get-ManagementRole возвращает результаты только для поддерживаемых командлетов. Некоторые командлеты доступны всем пользователям Microsoft 365 и поэтому не отображают никаких результатов. Например, командлет Set-MsolUserPassword, используемый для сброса пароля, не имеет связанных с ним групп ролей.
Можно ли сделать результаты, возвращаемые командлетом Get-ManagementRole, менее подробными?
Да, вы можете ввести $A=Get-ManagementRole -cmdlet <cmdlet>. Это записывает данные о назначении роли в переменную $A. Затем вы можете ввести $A и нажать Enter, чтобы увидеть нефильтрованный и лаконичный список ролей.
Что произойдет при использовании командлета Get-ManagementRole, если я неправильно напишу имя оцениваемого командлета PowerShell?
Если вы введете ключ -Cmdlet, а затем неправильно напишете имя командлета PowerShell, который хотите проверить, вы не получите никаких результатов. Это связано с тем, что PowerShell не отображает сообщение об ошибке или предупреждение о том, что вы допустили ошибку.
Что делать, если я не получаю никаких результатов после ввода сложной команды с большим количеством параметров?
Делайте все возможное, чтобы упростить команду. В частности, начните с проверки самого командлета без каких-либо параметров. Если это сработает, попробуйте добавить параметры в команду по одному. Скорее всего, вы ввели один из параметров неправильно или он не поддерживается.