Получите статус сертификата всех участников обслуживания, например, если сертификат недействителен, в Azure, и, в конечном итоге, то, к чему они подключены в Azure.

У меня есть много принципов обслуживания, которые не соблюдаются так, как должны. Они используются в разных трубопроводах и бог знает в чем.

Я пытаюсь найти способ получить список недопустимых принципов обслуживания. Я могу получить все принципы обслуживания, используя Get-AzADServicePrincipal, но это даст мне только идентифицирующую информацию, но не статус сертификата.

Также не похоже, что Azure Resource Graph предоставит мне эту информацию.

Так что мне интересно, есть ли уловка, о которой я не знаю, чтобы получить эту информацию.

edit: после просмотра ответа на akb первая часть скрипта будет примерно такой:

      $value = Get-AzADServicePrincipal

$principleWithOutdatedCertList = [System.Collections.ArrayList]@()
$principlesWithNoCerts = [System.Collections.ArrayList]@()

for($num=1;$num -le $value.Count;$num++)
{
    $cert = Get-AzADSpCredential -ObjectId $value[$num].Id
    if ($cert.EndDate -lt (Get-Date)){
        $principleWithOutdatedCertList.Add($value[$num].Id)
        Write-Output $value[$num].Id
    }
    if($null -eq $cert)
    {
        $principlesWithNoCerts.Add($value[$num].Id)
    }
}

Теперь нужно только подключить эти принципы обслуживания к их ресурсу :)

1 ответ

Этот скрипт предоставит информацию о том, есть ли у Service Prinicpal сертификаты.

      $value = Get-AzADServicePrincipal
$date = Get-Date -Format d
for($num=0;$num -le $value.Count;$num++)
{
    echo $value[$num].Id
    $cert = Get-AzADSpCredential -ObjectId $value[$num].Id
    if($cert -eq $null)
    {
        echo $value[$num].DisplayName "has no certs"
    }
    else
    {
        for($i=0;$i -le $cert.Count;$i++)
        {
            if($cert[$i].EndDate -gt $date)
            {
                echo $value[$num].DisplayName "has valid certs"
            }
        }
    }
    
}
Другие вопросы по тегам