天天看點

<Power Shell>10 删除個人存儲中過期的證書

HI,早上好,cantgis又和大家見面了。

今天我們聊聊關于證書這塊的事情,我們使用了很多網站驗證證書,其中 銀行、娛樂網站等等,他們每年都會到期一次。

在Internet Explorer中的證書清單,過期的證書的集合,不規則的存在着,我們如何查詢獲得和處理呢?下面cantgis 帶給大家這套解決方案。

想要獲得和找到這些證書,我們要使用x.509證書提供商(Microsoft.PowerShell.Security\Certificate)

1

<code>$myCerts</code> <code>= </code><code>Get-Item</code> <code>Cert:\CurrentUser\My</code>

預設情況下這個store是隻讀的,我們不要打開它,當然也不能删除掉。

成員名稱

說明

IncludeArchived

打開 X.509 證書存儲區并添加存檔證書。

MaxAllowed

以允許最進階通路的方式打開 X.509 證書存儲區。

OpenExistingOnly

ReadOnly

以隻讀方式打開 X.509 證書存儲區。

ReadWrite

以讀寫方式打開 X.509 證書存儲區。

OK 我們使用

<code>$myCerts</code><code>.Open(</code><code>[System.Security.Cryptography.X509Certificates.OpenFlags]</code><code>::ReadWrite)</code>

通過下面的cmdlet過濾那些在昨天就過期的證書,$mycerts 已經指向的路徑,我們可以拿它來做一個參考,并不是讓大家去重複的編碼形成無用的字元串。

2

<code>$today</code> <code>= </code><code>Get-Date</code>

<code>$ExpiredList</code> <code>= </code><code>Get-ChildItem</code> <code>$myCerts</code><code>.PSPath | </code><code>Where-Object</code> <code>{ </code><code>$_</code><code>.NotAfter </code><code>-lt</code> <code>$today</code> <code>}</code>

我們不想每次都調用管道:where-object  的cmdlet指令,因為我們不需要這樣

删除麼個證書的x.509證書存儲區,然後我們執行查詢

3

4

5

<code>ForEach</code> <code>(</code><code>$Cert</code> <code>in</code> <code>$ExpiredList</code><code>) {</code>

<code>   </code><code>$myCerts</code><code>.Remove(</code><code>$Cert</code><code>)</code>

<code>}</code>

<code>                                                                         </code> 

<code>$myCerts</code><code>.Close() </code><code># We opened it, so we need to close it.</code>

在powershell 3.0 中我們可以整合在一起來執行

6

7

8

9

10

<code>Get-ChildItem</code> <code>Cert:\CurrentUser\My |</code>

<code>Where-Object</code> <code>NotAfter </code><code>-lt</code> <code>$today</code> <code>|</code>

<code>Remove-Item</code>

<code>                           </code> 

<code>#或者</code>

<code>ForEach-Object</code> <code>-begin</code> <code>{ </code><code>$now</code> <code>= </code><code>get-date</code> <code>}</code> <code>-process</code> <code>{ </code><code>if</code> <code>(</code><code>$PSItem</code><code>.NotAfter </code><code>-lt</code> <code>$now</code> <code>)</code>

     本文轉自cantgis 51CTO部落格,原文連結:http://blog.51cto.com/cantgis/1228707,如需轉載請自行聯系原作者