ドメイン内のコンピューターを照会して証明書の値を取得する Powershell

ドメイン内のコンピューターを照会して証明書の値を取得する Powershell

環境内のすべてのコンピューターのリストを取得し、コンピューターにどのような証明書があるかを確認したいと考えています。証明書が 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()

関連情報