Microsoft CVRF API

Мне стало известно, что с 9 февраля 2021 года Microsoft Security Response Center удалил требования к регистрации для своего API CVRF .

Это может быть хорошим способом программной идентификации, загрузки и применения обновлений безопасности и, например, подготовки полностью исправленных систем.

В этом случае я пытался определить последнее накопительное обновление для данной версии Windows, скажем, 20H2, которое позже будет загружено из каталога Центра обновления Майкрософт , в котором отсутствует соответствующий API.

В настоящее время я могу просто подумать о разборе вызова:

      curl -X GET --header 'Accept: application/json' 'https://api.msrc.microsoft.com/cvrf/v2.0/cvrf/2021-Feb'          

Есть ли более конкретный и надежный способ?

2 ответа

Я не нашел простого способа разобрать вывод JSON. Однако такого рода работы:

      $product = "Windows 10"
$version = "20H2"
 
$raw = Invoke-WebRequest 'https://api.msrc.microsoft.com/cvrf/v2.0/cvrf/2021-feb' -Headers @{"accept"="application/json"}
$json = $raw.Content | ConvertFrom-Json
$search = "$product*$version*x64-based*"
$prd = $json.ProductTree.Branch[0].Items.Items | where{$_.Value -like $search}
$prdID = $prd.ProductID
($prd | Out-String) | Write-Host
$json.Vulnerability.Remediations | where{$_.ProductID -eq $prdID} |
  %{echo $_.URL} | Sort-Object | Get-Unique | Select -Last 1

Приведенный выше код не будет работать для меня на более новых платформах, но если вы проверите, больше ли массив ProductID 0, и выберете 0-й элемент, вы сможете правильно сравнить строки. Насколько мне известно, объект where не позволяет вам сделать это. Поэтому я поставил $rem на место и сделал внутри него вложенные циклы prdID и $rem. Я бы вставил код, но правила размещения кода я не могу понять. Просто PM мне, если какие-либо вопросы.

Другие вопросы по тегам