获取用户AD证书的另一个问题。这个问题全都与过滤输出数据有关。我们有几个用于不同目的的证书模板(智能卡,VPN等),并且AD中仍然存在按时间到期的证书。如何过滤每个用户的证书列表?我只需要保留每个模板的最新证书。
广告请求示例:

$user = Get-ADUser username -Properties "Certificates"
$Cert = $user.certificates | foreach {New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $_} | select @{n='Fullname';e={$_.subject -replace '^.*?CN=|,.*$'}}, @{n='subject';e={$_.subject -replace '^CN=|^E=|,.*$'}}, Notafter, thumbprint, @{N="Template";E={($_.Extensions |
            ?{$_.oid.Friendlyname -match "Certificate Template Information|Certificate Template Name"}).Format(0) `
                -replace "(.+)?=(.+)\((.+)?", '$2'}}

$Cert

输出为3个证书,例如:
Fullname   : Full User Name
subject    : subject@domain.com
NotAfter   : 30.05.2019 11:25:45
Thumbprint : hash_1
Template   : temaplate_1

Fullname   : Full User Name
subject    : subject@domain.com
NotAfter   : 02.04.2019 16:56:24
Thumbprint : hash_2
Template   : **template_2**

Fullname   : Full User Name
subject    : subject@domain.com
NotAfter   : 16.05.2018 14:54:22
Thumbprint : hash_3
Template   : **template_2**

我该如何过滤我的输出以仅保留每个模板的最新证书,例如。 hash_1和hash_2?

组对象看起来不错,但是我该如何进行
$Cert | Group-Object subject | fl


Name   : subject@domain.com
Count  : 3
Group  : {@{Fullname=Full User Name; subject=subject@domain.com; NotAfter=30.05.2019 11:25:45; Thumbprint=hash_1; Template=temaplate_1}, @{Fullname=Full User Name; subject=subject@domain.com; NotAfter=02.04.2019 16:56:24; Thumbprint=hash_2; Template=template_2}, @{Fullname=Full User Name; subject=subject@domain.com; NotAfter=16.05.2018 14:54:22; Thumbprint=hash_3; Template=template_2}}
Values : {subject@domain.com}

我认为可以通过某种方式使用Where-Object过滤结果。有什么帮助吗?

最佳答案

您可以使用Group-Object将对象按两个属性(主题和模板)分组,并按NotAfter对每个组进行排序,然后选择第一个元素。

$x | Group-Object -Property Subject, Template |
    ForEach-Object {
        $_.Group |
        Sort-Object -Property NotAfter -Descending |
        Select-Object -First 1
    }

关于powershell - 如何按模板和到期日期过滤x509证书,仅保留新鲜证书?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50823221/

10-13 07:46
查看更多