[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]PowerShell如何查询文件的数字签名信息?

本帖最后由 czjt1234 于 2019-10-28 10:34 编辑

如何查询文件的数字签名信息?
不要第三方工具

QQ 20147578

API函数
https://blog.csdn.net/qq_43080331/article/details/83096192

验证文件数字签名是否有效可以使用函数 WinVerifyTrust

取得文件数字签名证书信息需要使用函数 CryptQueryObject。

PS可以调用API吗?

QQ 20147578

TOP

简单点:查看证书是否有效和内容
  1. $file='绝对路径';
  2. $s=Get-AuthenticodeSignature $file;
  3. $s.Status;
  4. $s.SignerCertificate;
复制代码
复杂的或者各种内容,自己弄一下就明白了。
1

评分人数

QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

本帖最后由 czjt1234 于 2019-10-25 07:25 编辑

Thumbprint                                Subject
----------                                -------
6FFAD4A3B15F6A2C71D43C8E551DCECAB3A5183C  CN=Microsoft Corporation, OU=MOPR, O=Microsoft Corporation, L=Redmond, S=W...

这个显示不全啊,最后的 ... 怎么显示出来
看不到数字签名的日期,主要是想看这个

另外怎么把看到的信息输出到文本?

QQ 20147578

TOP

这里有篇文章,可能是你需要的:
https://blog.csdn.net/sinat_41104353/article/details/82826406
1

评分人数

TOP

  1. [System.Collections.ArrayList]$arr = @('"文件名","证书","序列号","颁发者","使用者","有效期"');
  2. forEach( $file In (dir 'C:\Windows\System32\drivers\*.sys') ){
  3.     $sig = Get-AuthenticodeSignature $file.FullName;
  4.     if( $sig.Status -eq 'Valid' ){
  5.         $str = '"' + $file.Name + '",';                                                 #文件名
  6.         $str += '"' + $sig.SignerCertificate.Thumbprint + '",';                         #证书
  7.         $str += '"' + $sig.SignerCertificate.SerialNumber + '",';                       #序列号
  8.         $str += '"' + $sig.SignerCertificate.IssuerName.Name.split('=,')[1] + '",';     #颁发者
  9.         $str += '"' + $sig.SignerCertificate.SubjectName.Name.split('=,')[1] + '",';    #使用者
  10.         $str += '"' + $sig.SignerCertificate.NotBefore.ToString('yyyy/MM/dd HH:mm:ss'); #有效期
  11.         $str += ' 至 ';
  12.         $str += $sig.SignerCertificate.NotAfter.ToString('yyyy/MM/dd HH:mm:ss') + '"';
  13.         $null = $arr.Add($str);
  14.     }
  15. }
  16. sc 'D:\result.csv' $arr
复制代码
1

评分人数

TOP

回复 6# WHY


非常感谢
不过我看到的时间戳,和有效期的起止日期都不一致
不知道有没有关于时间戳的属性

一批文件,我想按时间戳的日期来运行,避免出错

QQ 20147578

TOP

返回列表