<Power Shell>10 删除个人存储中过期的证书

本文介绍如何使用PowerShell脚本清理过期的X.509证书。包括在不同版本的PowerShell中操作证书存储的方法,以及如何筛选和删除过期证书。

HI,早上好,cantgis又和大家见面了。
今天我们聊聊关于证书这块的事情,我们使用了很多网站验证证书,其中 银行、娱乐网站等等,他们每年都会到期一次。
在Internet Explorer中的证书列表,过期的证书的集合,不规则的存在着,我们如何查询获得和处理呢?下面cantgis 带给大家这套解决方案。

想要获得和找到这些证书,我们要使用x.509证书提供商(
Microsoft.PowerShell.Security\Certificate
在powershell2.0中,需要我们通过手动来清理这些,
X509store类对象,并且使用get-item:

1
$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 我们使用

1
$myCerts .Open( [System.Security.Cryptography.X509Certificates.OpenFlags] ::ReadWrite)


通过下面的cmdlet过滤那些在昨天就过期的证书,$mycerts 已经指向的路径,我们可以拿它来做一个参考,并不是让大家去重复的编码形成无用的字符串。

1
2
$today  Get-Date
$ExpiredList  Get-ChildItem  $myCerts .PSPath |  Where-Object  $_ .NotAfter  -lt  $today  }


我们不想每次都调用管道:where-object  的cmdlet指令,因为我们不需要这样
删除么个证书的x.509证书存储区,然后我们执行查询

1
2
3
4
5
ForEach  ( $Cert  in  $ExpiredList ) {
    $myCerts .Remove( $Cert )
}
                                                                          
$myCerts .Close()  # We opened it, so we need to close it.



在powershell 3.0 中我们可以整合在一起来执行

1
2
3
4
5
6
7
8
9
10
$today  Get-Date
Get-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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值