Сервис Microsoft Graph API позволяет получать доступ к любым объектам в облаке Azure (Microsoft 365) через единую точку REST API (https://graph.microsoft.com). Скорее всего вы подумаете, что это должно быть интересно только веб программистам, но это не так. Доступ к некоторым данным, объектам или свойствам в Microsoft 365 можно получить только через Microsoft Graph. Администратору Azure для сбора аналитики, статистики и другой информации также периодически приходится использовать Microsoft Graph.
В этой статье мы покажем, как зарегистрировать свое приложение в Azure AD, получить токен для аутентификации, подключаться к различным ресурсам Microsoft 365 (Azure AD, Office 365, Intune, SharePoint, Teams, OneNote и т.д.) через RESTful из PowerShell с помощью командлета Invoke-RestMethod
. Microsoft Graph можно использовать как для получения данных, так и для управления объектами в Azure.
Для доступа к ресурсам в вашем тенанте Azure через Microsoft Graph нужно создать новое приложение Azure и разрешить ему получать доступ к различным объектам Azure.
azGraphPowerShellApp
; выберите кому можно использовать данное приложение: Accounts in this organizational directory only (tenantname only - Single tenant)
, и нажмите Register ; Для выполнения аутентификации в приложении можно использовать сертификат или секрет. Секрет представляет собой по сути автоматически генерируемый пароль, а имя пользователя — это идентфикатор приложения. Создадим секрет для нашего приложения.
Вставьте свои значения в переменные PowerShell
$ApplicationID = "46692ad-f8a0-123f-8cca-432102de3bcf"
$TenatDomainName = "26216542-465a-407e-a17d-2bb4c3e3313b"
$AccessSecret = "d-8jM3ZUG87du-syZd32k01q.gkssa3mH3v"
Для использования Microsoft Graph API из PowerShell не нужно устанавливать отдельные PowerShell модули (типа Azure AD ). Взаимодействие выполняется с помощью встроенного командлета Invoke-RestMethod
.
Для подключения к GraphApi нужно получить токен доступа. Следующий скрипт PowerShell позволяет аутенртфицироваться в вашем приложении и получить токен доступа к Microsoft Graph API.
$ApplicationID = "46692ad-f8a0-123f-8cca-432102de3bcf"
$TenatDomainName = "26216542-465a-407e-a17d-2bb4c3e3313b"
$AccessSecret = "d-8jM3ZUG87du-syZd32k01q.gkssa3mH3v"
$Body = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_token
С этим токеном можно выполнять различные запросы к вашему тенанту Azure через GraphAPI.
Например, следующий скрипт позволяет вывести список всех групп в вашей Azure AD:
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value.displayName
Можно вывести дату создания группы в Azure AD :
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
$Groups=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value
$Groups | select displayName,createdDateTime
Вывести имя, UPN и email адрес пользователя:
$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$users=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$users | select displayName,userprincipalname,mail
The remote server returned an error: (403) Forbidden.
В рассмотренных примерах мы только читали данные из Azure AD с помощью метода GET. Но вы можете использовать методы POST, PUT, PATCH и DELETE для внесения измененияй. Например, можно создать пользователя в Azure AD, сбросить его пароль, изменить описание и т.д.
Для просмотра доступных свойства и методов Microsoft Graph API через браузер можно использовать Graph Explorer ( https://developer.microsoft.com/en-us/graph/graph-explorer ).
Install-Module Microsoft.Graph
). Но, мы показали, что в PowerShell можно обращаться к Microsoft Graph и напрямую. Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…
Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…
Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…
The AC power adapter wattage and type cannot be determined — причины и решение При…
Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…
Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…