Я пытаюсь получить подмножество компьютеров из Microsoft Defender ATP через вызовы API, используя запросы OData $filter, следуя инструкциям Microsoft (https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-atp/exposed-apis-odata-samples), но независимо от того, что я делаю, я получаю один и тот же полный набор машин с ограничением в 10 000.
Итак, по какой-то причине мои следующие коды не работают должным образом. Что я делаю не так? Кроме того, как мне получить более 10 000 машин?
Я удалил переменные tenantId, appId и appSecret из приведенного ниже кода.
ОБНОВЛЕНИЕ: я заметил, что когда я проверяю значение переменной $machinesUrl2 в PowerShell ISE после запуска скрипта, в URI отсутствует $filter. Ниже приведен вывод переменной $machinesUrl2:
https://api.securitycenter.windows.com/api/machines?=healthStatus+eq+'Inactive'
Что вызывает падение $filter? это нормальное поведение?
Спасибо,
$resourceAppIdUri = 'https://securitycenter.onmicrosoft.com/windowsatpservice'
$oAuthUri = "https://login.windows.net/$TenantId/oauth2/token"
$authBody = [Ordered] @{
resource = "$resourceAppIdUri"
client_id = "$appId"
client_secret = "$appSecret"
grant_type = 'client_credentials'
}
$authResponse = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $authBody -ErrorAction Stop
$aadToken = $authResponse.access_token
$machinesUrl2 = "https://api.securitycenter.windows.com/api/machines?$filter=healthStatus+eq+'Inactive'"
$headers = @{
'Content-Type' = 'application/json'
Accept = 'application/json'
Authorization = "Bearer $aadToken"
}
$machinesResponse = Invoke-WebRequest -Method Get -Uri $machinesUrl2 -Headers $headers -ErrorAction Stop
$machines = ($machinesResponse | ConvertFrom-Json).value