Использование команды Get-MgGroup в PowerShell
Команда Get-MgGroup — это простой способ получения и управления вашими группами Microsoft 365. Она позволяет вам получить все или конкретные группы вместе с их свойствами. Команда Get-MgGroup является частью Microsoft Graph SDK для PowerShell, который позволяет вам управлять всеми службами Microsoft через единую точку доступа.
В этой статье мы рассмотрим, как вы можете использовать командлет Get-MgGroup для поиска и получения информации о группах из Microsoft Entra.
Требования
Прежде чем вы сможете использовать командлет Get-MgGroup, необходимо убедиться, что вы установили модуль Microsoft Graph PowerShell. Вы можете прочитать полный обзор здесь или использовать команду ниже для быстрой установки:
Install-Module Microsoft.Graph -ForceКроме того, вам нужно будет подключиться к Microsoft Graph с правильными областями. Чтобы получить информацию о группе, нам нужна только область Group.Read.All. Подробнее о подключении к Microsoft Graph и использовании областей вы можете прочитать в этой статье.
Connect-MgGraph -Scopes 'Group.Read.All'Получение групп
Команда Get-MgGroup позволяет находить и извлекать информацию о группах из Microsoft Entra. Существует несколько параметров, которые мы можем использовать для поиска или фильтрации пользователей:
- GroupId - Возвращает конкретную группу на основе UPN или ObjectID
- Фильтр - Получить несколько объектов на основе oDate v3 запроса
- Поиск - Получить все группы, которые соответствуют searchString
- Все - Возврат всех результатов (по умолчанию возвращаются первые 100 элементов)
- Топ - Вернуть n количество результатов
Хорошо знать, что cmdlet по умолчанию возвращает только первые 100 результатов. Поэтому убедитесь, что вы используете параметр -All, чтобы получить все результаты, когда это необходимо.
Получить группу по ID
Когда речь идет о получении объектов с помощью Microsoft Graph, нам часто нужно использовать идентификатор объекта, чтобы его получить. Для пользователей мы можем использовать UserPrincipalName вместо идентификатора, но для групп у нас нет такой роскоши. Параметр GroupID принимает только фактический идентификатор.
Чтобы получить группу по идентификатору, вы можете сделать следующее:
Get-MgGroup -GroupId "ded414a7-89fa-4cd1-aa91-34c7d4757a4f"Получить MgGroup по имени
Более распространенный подход заключается в том, чтобы получить группу по имени. Однако у команды Get-MgGroup нет параметра для имени группы. Это означает, что нам придется использовать параметр -Filter, чтобы найти группу на основе полного имени или части из него.
Для фильтра мы можем использовать следующие операторы, чтобы получить группы:
| Оператор | Описание | Пример |
|---|---|---|
| равно | Равно | DisplayName eq ‘M365_E5’ |
| и | И | |
| или | И | DisplayName равен ‘M365_E3’ или DisplayName равен ‘M365_E5’ |
| начинается с | Строка начинается с | начинается с(DisplayName, 'M365_E3') |
Чтобы получить группу с именем «M365_E5», вам следует использовать оператор eq и фильтровать по отображаемому имени:
Get-MgGroup -Filter "DisplayName eq 'M365_E5'"Если вы не знаете точное название, то оператор startswith также является хорошим вариантом. Это получит все группы, где название начинается с заданной строки:
Get-MgGroup -Filter "startswith(DisplayName,'M365')"Получить динамические группы
Одним из более сложных фильтров, с которым трудно разобраться, является, например, фильтрация по GroupTypes. Предположим, вы хотите получить все динамические группы из Microsoft Entra. Обычный фильтр не сработает, потому что свойство GroupTypes является объектом.
Тем не менее, мы все равно можем отфильтровать это, используя фильтр OData, такой как следующий:
Get-MgGroup -Filter "GroupTypes/any(x:x eq 'DynamicMembership')"Использование продвинутых фильтров
Как вы видели выше, параметр фильтра по умолчанию довольно ограничен. Однако возможно использовать более продвинутые фильтры в модуле Microsoft Graph. Эти продвинутые запросы доступны только для объектов Microsoft Entra ID (объекты directory).
Чтобы использовать расширенный фильтр, нам нужно добавить два параметра при использовании -Filter. Мы должны установить уровень согласованности на 'Eventual' и добавить переменную Count. Когда вы добавите эти два параметра, вы также сможете использовать приведенные ниже операторы поиска.
| Оператор | Описание | Пример |
|---|---|---|
| не | Не равно | DisplayName не ‘M365_E5’ |
| не | и Не | |
| заканчивается | Строка заканчивается на | заканчиваетсяНа(DisplayName,’E3′) |
Вы можете найти дополнительную информацию о расширенных возможностях запросов здесь, в документации Microsoft.
Получение всех групп, созданных в прошлом году
С включенными расширенными запросами мы можем, например, получить все группы, созданные в прошлом году. Для этого мы отфильтруем группы по дате и времени создания и вычислим дату, вычитая один год из текущей даты.
Обратите внимание, что мы добавили параметры –ConsistencyLevel eventual и -CountVariable Count к коммандлету:
Get-MgGroup -Filter "CreatedDateTime ge $((Get-Date).AddYears(-1).ToString("s"))Z" -ConsistencyLevel eventual -CountVariable CountТеперь мы также можем комбинировать это с другими операторами, чтобы получить, например, все группы, которые были созданы в прошлом году и где имя начинается с «M365» :
Get-MgGroup -Filter "CreatedDateTime ge $((Get-Date).AddYears(-1).ToString("s"))Z and startsWith(Displayname,'M365')" -ConsistencyLevel eventual -CountVariable CountИспользование поиска для нахождения групп
Кроме параметра фильтра, мы также можем использовать параметр -Search для поиска групп. Параметр требует указания свойства, по которому вы хотите осуществить поиск, и значения. Вам также нужно будет установить -consistencylevel на eventual.
Преимущество параметра -search заключается в том, что он позволяет нам искать по любой части значения. Например, если мы хотим искать по части имени, мы можем использовать:
Get-MgGroup -Search 'DisplayName:365' -ConsistencyLevel eventualПреимуществом поиска является то, что вы можете использовать его практически по всем свойствам, которые возвращаются командлетом. Таким образом, мы даже можем выполнить поиск по описанию, например:
Get-MgGroup -Search 'Description:365' -ConsistencyLevel eventualЗавершение
Получение информации о группе Microsoft 365 довольно просто с помощью команды Get-MgGroup. Убедитесь, что вы также ознакомились с новым модулем PowerShell Microsoft Entra, который упрощает работу с Microsoft Graph.
Надеюсь, вам понравилась эта статья. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже.

