Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает, как при помощи Windows PowerShell получить список сертификатов с истекающим сроком действия.
Это достаточно просто. А просто это потому, что в Windows PowerShell 3.0 для командлета Get-ChildItem был добавлен динамический параметр –ExpiringInDays, который предназначен для использования с провайдером Certificate. При помощи этого параметра вы можете указать количество дней, и командлет выведет вам список сертификатов, которые истекают в этот промежуток времени. Например, чтобы получить список сертификатов, истекающих в ближайшие 75 дней, используйте следующую команду:
Get-ChildItem -Path cert: -Recurse -ExpiringInDays 75
На рисунке ниже представлен вывод команды.
Мне не обязательно переходить на диск cert:, поскольку я могу указать его в качестве значения для параметра –Path. Если же мне нужно будет выполнить несколько операций на этом диске, то будет удобнее перейти на него при помощи команды Set-Location cert: (sl и cd – алиасы командлета).
PS C:\> sl cert:
После того, как я перейду на диск cert:, строка Windows PowerShell (по умолчанию), будет выглядеть следующим образом:
PS Cert:\>
Получаем список истекающих сертификатов в Windows PowerShell 2.0
Если вы используете Windows PowerShell 2.0 (или вам нравится набирать код), вы также можете получить список истекающих сертификатов, используя командлет Get-ChildItem и передав его результаты командлету Where-Object, где вам будет нужно отфильтровать сертификаты по свойству NotAfter. Замечательным является тот факт, что Windows PowerShell позволяет вам довольно просто работать с датами. Здесь я использую метод AddDays объекта DateTime, возвращаемого командлетом Get-Date. Для того чтобы им воспользоваться, я помещу командлет Get-Date в скобки.
Внутри скриптблока Where-Object я сравниваю значение свойства NotAfter с датой, отстоящей от сегодняшней на 75 дней. Если сертификат истекает в этот промежуток времени, он передается командлету Select-Object, который выбирает свойства thumbprint и subject.
Следующая команда возвращает список сертификатов, истекающих в ближайшие 75 дней.
Get-ChildItem -Recurse | where { $_.notafter -le (get-date).AddDays(75) } | select thumbprint, subject
Запустив эту команду, мы увидим, что ее вывод несколько отличается от результатов предыдущей команды.
Причина этого состоит в том, что командлет Get-ChildItem с параметром –ExpiringInDays не возвращает сертификаты с уже истекшим сроком действия. А в Windows содержатся сертификаты с истекшим сроком действия, так как некоторые исполняемые файлы подписаны с их использованием. Поэтому такие сертификаты требуются для проверки правильности подписи.
Немного изменив команду, так, чтобы она отфильтровывала уже истекшие сертификаты, мы получим результаты, сходные с результатами первой команды.
Get-ChildItem -Recurse | where { $_.notafter -le (get-date).AddDays(75) -AND $_.notafter -gt (get-date)} | select thumbprint, subject
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell