HI,早上好,cantgis又和大家見面了。
今天我們聊聊關於認證這塊的事情,我們使用了很多網站驗證認證,其中 銀行、娛樂網站等等,他們每年都會到期一次。
在Internet Explorer中的認證列表,到期的認證的集合,不規則的存在著,我們如何查詢獲得和處理呢?下面cantgis 帶給大家這套解決方案。
想要獲得和找到這些認證,我們要使用x.509認證供應商Microsoft.PowerShell.Security\Certificate)
在powershell2.0中,需要我們通過手動來清理這些,X509store類對象,並且使用get-item:
$myCerts = Get-Item Cert:\CurrentUser\My
緊接下來,我們想要刪除認證,必須通過枚舉:openflags開啟這個x509憑證存放區對象。這個open()方法:你可以建立一個新的儲存或者設定訪問指定儲存當然基於openflags)
預設情況下這個store是唯讀,我們不要開啟它,當然也不能刪除掉。
成員名稱 |
說明 |
|
|
IncludeArchived |
開啟 X.509 憑證儲存區並添加存檔認證。 |
|
MaxAllowed |
以允許最進階訪問的方式開啟 X.509 憑證儲存區。 |
|
OpenExistingOnly |
僅開啟現有儲存區。如果不存在任何儲存區,Open 方法不會建立新的儲存區。 |
|
ReadOnly |
以唯讀方式開啟 X.509 憑證儲存區。 |
|
ReadWrite |
以讀寫方式開啟 X.509 憑證儲存區。 |
OK 我們使用
$myCerts.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
通過下面的cmdlet過濾那些在昨天就到期的認證,$mycerts 已經指向的路徑,我們可以拿它來做一個參考,並不是讓大家去重複的編碼形成無用的字串。
$today = Get-Date$ExpiredList = Get-ChildItem $myCerts.PSPath | Where-Object { $_.NotAfter -lt $today }
我們不想每次都調用管道:where-object 的cmdlet指令,因為我們不需要這樣
刪除麼個認證的x.509憑證存放區區,然後我們執行查詢
ForEach ($Cert in $ExpiredList) { $myCerts.Remove($Cert)} $myCerts.Close() # We opened it, so we need to close it.
在powershell 3.0 中我們可以整合在一起來執行
$today = Get-DateGet-ChildItem Cert:\CurrentUser\My |Where-Object NotAfter -lt $today |Remove-Item #或者 Get-ChildItem Cert:\CurrentUser\My |ForEach-Object -begin { $now = get-date } -process { if ($PSItem.NotAfter -lt $now )Remove-Item
本文出自 “Cantgis” 部落格,請務必保留此出處http://cantgis.blog.51cto.com/5788192/1228707