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
|
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
|