需求分析
今天突然有一个查看某个文件夹下某个特定数字签名的需求,于是便想着使用Powershell实现一下。
在实现之前,我们可以先简化一下需求,将需求改为:查看某个文件的数字签名
实现过程
使用搜索引擎
这个就比较复杂和坑了。
1.首先我搜索了powershell获取文件数字签名
,找到了PowerShell 技能连载 - 检查数字签名 | 叹为观止这篇文章
2.然后发现他给出的代码是弹出数字签名的框来,就是下面这个。我就寻思着我想要的是文本输出
而不是图形化输出
啊。然后我就看了看他的输出函数是[Security.Cryptography.x509Certificates.X509Certificate2UI]::DisplayCertificate($signerCert)
,这是个啥呢,于是我把[]里的东西搜索了一下,找到了微软官网,才知道是个win API。
3.在该页面上我了解到那原来是调用了X509Certificate2UI.DisplayCertificate Method
这个函数,函数参数是X509Certificate2
对象
4.随后我又在第一次打开的api页面上看了看,发现这个X509Certificate2
类有很多方法和属性,里面和可能有我想要的东西。
5.于是,我又搜啊搜,最后通过关键字powershell获取文件证书
搜到了这个PowerShell 技能连载 - 读取 PFX 证书 。仔细阅读后发现里面的$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
这句创建对象对我十分有帮助,我照着这个写了一个,在微软网站查看该类的方法发现toString
的输出是满足要求的。通过toString
的输出我也进一步了解到其SubjectName
和 IssuerName
属性是我想要的内容。最后编写代码即可。
找到内容(这个比较耗时)并编写完大概花了俩小时(中间也洗了洗衣服啥的),时间有点长…