Используем PowerShell для поиска сертификатов с истекающим сроком действия – Hey, Scripting Guy! Blog

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает, как при помощи Windows PowerShell получить список сертификатов с истекающим сроком действия.

Это достаточно просто. А просто это потому, что в Windows PowerShell 3.0 для командлета Get-ChildItem был добавлен динамический параметр –ExpiringInDays, который предназначен для использования с провайдером Certificate. При помощи этого параметра вы можете указать количество дней, и командлет выведет вам список сертификатов, которые истекают в этот промежуток времени. Например, чтобы получить список сертификатов, истекающих в ближайшие 75 дней, используйте следующую команду:

Get-ChildItem -Path cert: -Recurse -ExpiringInDays 75

На рисунке ниже представлен вывод команды.

01

Мне не обязательно переходить на диск 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

02

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

Причина этого состоит в том, что командлет Get-ChildItem с параметром –ExpiringInDays не возвращает сертификаты с уже истекшим сроком действия. А в Windows содержатся сертификаты с истекшим сроком действия, так как некоторые исполняемые файлы подписаны с их использованием. Поэтому такие сертификаты требуются для проверки правильности подписи.

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

Get-ChildItem -Recurse | where { $_.notafter -le (get-date).AddDays(75) -AND $_.notafter -gt (get-date)} | select thumbprint, subject

03

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/05/use-powershell-to-find-certificates-that-are-about-to-expire.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

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

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

Логотип WordPress.com

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

Google+ photo

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

Фотография Twitter

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

Фотография Facebook

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

Connecting to %s