使用Powershell比较证书

使用Powershell比较证书,powershell,x509certificate,Powershell,X509certificate,我正在从事一个灾难恢复项目,我建议作为计划的一部分,对主站点和辅助站点进行定期审核。审核任务之一是确保辅助站点安装了与主站点相同的证书。我想我可以使用Powershell完成这项工作 Get-ChildItem -Path Cert:\LocalMachine\My Get-ChildItem -Path Cert:\LocalMachine\Root 我知道我可以使用上面的命令来获取证书列表,但我遇到的问题是试图在一个脚本中完成这一切。我想在一台服务器上获取证书列表,然后在另一台服务器上获取

我正在从事一个灾难恢复项目,我建议作为计划的一部分,对主站点和辅助站点进行定期审核。审核任务之一是确保辅助站点安装了与主站点相同的证书。我想我可以使用Powershell完成这项工作

Get-ChildItem -Path Cert:\LocalMachine\My
Get-ChildItem -Path Cert:\LocalMachine\Root

我知道我可以使用上面的命令来获取证书列表,但我遇到的问题是试图在一个脚本中完成这一切。我想在一台服务器上获取证书列表,然后在另一台服务器上获取证书列表,然后比较这两个列表。我对Powershell非常陌生,因此不确定从何处开始。

要检索证书,您将使用基础.NET类,因为证书提供程序默认情况下不公开远程计算机连接。您也可以通过PS远程处理找到另一种可能性。以下是函数:

function Get-Certificates {
    Param(
            $Computer = $env:COMPUTERNAME,
            [System.Security.Cryptography.X509Certificates.StoreLocation]$StoreLocation,
            [System.Security.Cryptography.X509Certificates.StoreName]$StoreName
          ) 

    $Store = New-Object System.Security.Cryptography.X509Certificates.X509Store("\\$computer\$StoreName",$StoreLocation)
    $Store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]"ReadOnly")
    $Store.Certificates
}
下面是如何使用它来比较两个列表:

$Left = Get-Certificates -StoreLocation LocalMachine -StoreName Root
$Right = Get-Certificates -StoreLocation LocalMachine -StoreName Root -Computer "REMOTE-PC"

# Dump to console
Compare-Object $Left $Right -property Thumbprint, FriendlyName, Subject, NotAfter | Format-Table

# Export results to file
Compare-Object $Left $Right -property Thumbprint, FriendlyName, Subject, NotAfter | Export-Csv Comparison.csv

您尝试了什么,遇到了什么需要帮助的问题?我知道我可以使用上面的命令获取证书列表,但我遇到的问题是尝试在一个脚本中完成这一切。我想在一台服务器上获取证书列表,然后在另一台服务器上获取证书列表,然后比较这两个列表。我对Powershell非常陌生,所以我不确定从哪里开始。开始。