我们正在查看环境中所有计算机的列表,并查看计算机上有哪些证书。我们需要知道它们是 sha1 还是 sha2 哈希。
我已在网上查过但不知道这是否可能?
请帮助
答案1
您可以像这样检查算法:
$Cert = Get-ChildItem Cert:\LocalMachine\My\ | Select -First 1
if($Cert.SignatureAlgorithm.FriendlyName -like "sha2*"){
Write-Host "SHA2 sig, all good"
}
要获取域中的所有计算机,您只需使用Get-ADComputer
:
$Computers = Get-ADComputer -Filter {Enabled -eq $True}
foreach($Computer in $Computers){
# Run your check against each $Computer in here
}
然后您可以使用 PSRemoting,并在远程计算机上执行检查:
$pss = New-PSSession -ComputerName remotemachine.domain.tld
Invoke-Command -Session $pss -ScriptBlock {
# code to check certs go here
}
或者您可以从自己的机器直接连接到远程证书存储:
$CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store "\\$ComputerName\My","LocalMachine"
$CertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadOnly)
foreach($Cert in $CertStore.Certificates){
# once again, inspect $Cert.SignatureAlgorithm
}
$CertStore.Close()