You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell脚本获取数字签名选项卡时间戳属性符合条件的文件列表

解决PowerShell获取数字签名时间戳的两个需求

我明白你遇到的问题了——VersionInfo确实只能拿到文件详细信息选项卡里的属性,完全碰不到数字签名选项卡的内容。别担心,我们可以用PowerShell自带的Get-AuthenticodeSignature cmdlet来搞定这两个需求,这才是专门处理文件数字签名的工具。


需求1:获取带有时间戳属性的文件列表

这个需求的核心是检查每个文件的数字签名是否包含有效的时间戳,我们可以通过Get-AuthenticodeSignature返回对象的Timestamp属性来判断(有时间戳时该属性会返回一个DateTime对象,无时间戳则为$null)。

示例脚本

# 定义要扫描的文件夹路径(支持多个路径)
$targetFolders = "C:\Your\First\Folder", "D:\Your\Second\Folder"

# 遍历所有文件,筛选出带时间戳的签名文件
Get-ChildItem -Path $targetFolders -File -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
    # 获取文件的数字签名信息
    $signature = Get-AuthenticodeSignature -FilePath $_.FullName -ErrorAction SilentlyContinue
    
    # 筛选条件:签名有效 且 存在时间戳
    if ($signature -and $signature.Status -eq "Valid" -and $signature.Timestamp) {
        # 输出结构化结果
        [PSCustomObject]@{
            文件路径 = $_.FullName
            时间戳 = $signature.Timestamp
            签名者 = $signature.SignerCertificate.Subject
            签名状态 = $signature.Status
        }
    }
} | Export-Csv -Path "带时间戳的签名文件列表.csv" -NoTypeInformation -Encoding UTF8

脚本说明

  • -ErrorAction SilentlyContinue:跳过无法访问的文件或未签名的文件,避免脚本中断
  • 如果你只需要扫描特定类型的文件(比如exe、dll),可以在Get-ChildItem后添加-Include "*.exe", "*.dll"
  • 最终结果会导出为CSV文件,方便后续查看和分析

需求2:查找时间戳属性为"Not Available"的文件

这里的"Not Available"对应数字签名存在但没有时间戳的情况,我们只需要判断签名状态不是NotSigned且Timestamp属性为$null即可。

示例脚本

# 定义要扫描的文件夹路径
$targetFolders = "C:\Your\Target\Folder1", "E:\Your\Target\Folder2"

# 遍历文件,筛选出时间戳不可用的签名文件
Get-ChildItem -Path $targetFolders -File -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
    $signature = Get-AuthenticodeSignature -FilePath $_.FullName -ErrorAction SilentlyContinue
    
    # 筛选条件:已签名 但 无时间戳
    if ($signature -and $signature.Status -ne "NotSigned" -and -not $signature.Timestamp) {
        [PSCustomObject]@{
            文件路径 = $_.FullName
            签名状态 = $signature.Status
            时间戳状态 = "Not Available"
        }
    }
} | Export-Csv -Path "时间戳缺失的文件列表.csv" -NoTypeInformation -Encoding UTF8

脚本说明

  • 如果需要包含签名无效但同样无时间戳的文件,直接去掉签名状态的限制判断即可
  • 脚本会自动忽略未签名的文件,只针对有数字签名但缺少时间戳的文件进行收集

内容的提问来源于stack exchange,提问作者SRP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:19:03