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