Для этой проблемы я не знаю, как запустить Get-IntuneManagedDevice
с токеном в функции azure powershell. Но я могу предоставить обходной путь ниже для вашей справки (используйте rest api, чтобы получить тот же результат в функции azure powershell, который вы ожидали).
1. Откройте fildder и запустите команду Get-IntuneManagedDevice
в PowerShell мы можем видеть команду, запрашивающую api графа Microsoft в бэкэнде. API - это https://graph.microsoft.com/v1.0/deviceManagement/managedDevices
, а эта страница является его документом ( вам не нужно делать этот шаг ).
2. Мы необходимо добавить разрешение для вашего приложения, зарегистрированного в azure объявление.
After add the permission, don't forget grant admin consent for it.
3. We can find the graph api just support Delegated permission type but not support Application permission type according to the документ . введите описание изображения здесь Таким образом, мы не можем использовать учетные данные клиента в качестве типа предоставления для получения токена доступа (мы не можем просто использовать секретный ключ для получения токена доступа), как вы упомянули в комментариях выше . Нам нужно запросить токен доступа по типу предоставления пароля, поэтому используйте команду ниже, чтобы получить токен доступа:
$AppId = 'xxx'
$AppSecret = 'xxx'
$Scope = "https://graph.microsoft.com/.default"
$TenantName = "xxx"
$username = "xxx"
$password = "xxx"
$Url = "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token"
Add-Type -AssemblyName System.Web
$Body = @{
client_id = $AppId
client_secret = $AppSecret
scope = $Scope
username = $username
password = $password
grant_type = 'password'
}
$PostSplat = @{
ContentType = 'application/x-www-form-urlencoded'
Method = 'POST'
Body = $Body
Uri = $Url
}
$Request = Invoke-RestMethod @PostSplat
$Request.access_token
4. На шаге 1 мы знаем команду Get-IntuneManagedDevice
request api графика в бэкэнде, поэтому нам просто нужно запросить api графика, и тогда мы сможем получить результат.
$Uri = "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices"
$Header = @{
Authorization = "$($Request.token_type) $($Request.access_token)"
}
$result = Invoke-RestMethod -Uri $Uri -Headers $Header -Method Get -ContentType "application/json"
$result.value
Надеюсь, это поможет ~