Powershell – простой скрипт удаления просроченных сертификатов


Консоль EMC сервера Exchange 2013 умеет показывать алерты о сертификатах, которые близки к сроку окончания действия. Очень удобно, можно вовремя обновить сертификаты, не допуская остановки почтового сервиса.

Operation Manager также имеет эту полезную возможность – контролировать сертификаты и выдавать предупреждение, когда их срок выходит. Остаётся только отреагировать на эти предупреждения и заранее обновить сертификаты.

Возникает вопрос, что делать с просроченными и замененными сертификатами. Они не мешают системе работать, но продолжают «светиться» в мониторинге. Значит их надо удалить из локального хранилище на сервере. Невозможно в общем случае определить можно ли удалять конкретный сертификат, но для частных случаев вполне возможно подобрать нужные фильтры для выбора сертификата для удаления.

Ниже приведен простой скрипт, который удаляет просроченные сертификаты выданные сервису Remote Desktop Services. Если у вас настроена политика автоматической выдачи сертификатов для Remote Desktop Services, то новый сертификат уже выдан и используется сервисом, поэтому старый сертификат можно без опасений удалить.

$servers = Get-ADComputer -Filter * -SearchBase "OU=Servers,DC=domain,DC=ru" -Properties OperatingSystem |
     Where-Object DNSHostName -notlike "SSN*" |
     Where-Object OperatingSystem -like "Windows Server 2012*" |
     Select -ExpandProperty DNSHostName

Invoke-Command -ComputerName $servers -ScriptBlock {
    $certs = dir -ExpiringInDays 0 Cert:\LocalMachine\My
    $certs | 
        ? { $_.EnhancedKeyUsageList.ObjectId -eq "1.3.6.1.4.1.311.54.1.2" } | 
        Remove-Item -Whatif
}

Если вы заменили сертификаты на множестве Exchange или Lync серверов, то вы можете поправить скрипт так, чтобы удалить именно ненужные уже сертификаты (например, фильтр по Thumbprint).

$servers = Get-ADComputer -Filter * -SearchBase " OU=Servers,DC=domain,DC=ru" -Properties OperatingSystem |
     Where-Object DNSHostName -like "EXCHN*" |
     Select -ExpandProperty DNSHostName

Invoke-Command -ComputerName $servers -ScriptBlock {
    $certs = dir -ExpiringInDays 0 Cert:\LocalMachine\My
    $certs | 
        ? { $_.Thumbprint -eq "1A82D4CE7A0EA08FF66A4397B2F410071913B03B" } | 
        Remove-Item -Whatif
}
Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: