Powershell Fingerprints von Zertifikaten abgleichen
Hallo in die Runde,
ich habe einen Satz Zertifikate und möchte Sicherstellen das das Zertifikat auch installiert worden ist.
Das Auslesen des Stores klappt soweit.
Jetzt war die Idee einfach die Fingerprints abzugleichen.
Der Abgleich mag nicht.
$_ enthält:
Laut Fehler kennt er Thumbprint nicht, aber mit einem "Write-Host $_.Thumbprint" gibt er mir allerdings den Fingerprint korrekt aus.
Hat einer eine Idee?
VG
ich habe einen Satz Zertifikate und möchte Sicherstellen das das Zertifikat auch installiert worden ist.
Function Read-Store{
Param($Store)
$Store = New-Object System.Security.Cryptography.X509Certificates.X509Store("$Store","CurrentUser")
$Store.Open("ReadOnly")
$X509s = @($Store.Certificates)
$StoreCerts = @()
Foreach ($X509 in $X509s){
$Cert = New-Object -TypeName Psobject -Property @{
"Subjectname" = $($X509.Subjectname);
"FriendlyName" = $X509.FriendlyName;
"Subject" = $X509.subject;
"Issuer" = $X509.Issuer;
"Thumbprint" = $X509.Thumbprint;
"NotAfter" = $X509.NotAfter;
"NotBefore" = $X509.NotBefore;
}#Psobject
$StoreCerts += $Cert
}
$StoreCerts
}
Das Auslesen des Stores klappt soweit.
Jetzt war die Idee einfach die Fingerprints abzugleichen.
$Fingerprints = @( "A", "B", "C" )
$ReturnCode = "-1"
$Result = Read-Store "My" #Eigene Zertifikate holen
$Result | %{
foreach($Fingerprint in $Fingerprints){
if($Fingerprint -match $_.Thumbprint){
$ReturnCode = "0"
}
}
}
Der Abgleich mag nicht.
$_ enthält:
@{NotBefore=12.09.2017 15:35:58; NotAfter=19.08.2117 15:35:58; Subject=CN=<xxxxx>; FriendlyName=; Issuer=CN==<xxxxx>;
8; Thumbprint=A; Subjectname=System.Security.Cryptography.X509Certificates.X500Dist
inguishedName}
Laut Fehler kennt er Thumbprint nicht, aber mit einem "Write-Host $_.Thumbprint" gibt er mir allerdings den Fingerprint korrekt aus.
Hat einer eine Idee?
VG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 364109
Url: https://administrator.de/forum/powershell-fingerprints-von-zertifikaten-abgleichen-364109.html
Ausgedruckt am: 17.04.2025 um 06:04 Uhr
3 Kommentare
Neuester Kommentar

Bedenke: Du machst mit -Match einen Regex und keinen String Vergleich, also wäre hier ein -eq passender!.
Und du mixt hier zwei Arten Schleifen, nicht gerade guter Stil.
Gruß Snap
Und du mixt hier zwei Arten Schleifen, nicht gerade guter Stil.
Gruß Snap
Servus.
Alternativ auch ohne compare-object
Grüße Uwe
Zitat von @H41mSh1C0R:
ich habe einen Satz Zertifikate und möchte Sicherstellen das das Zertifikat auch installiert worden ist.
machst du mit compare-object ganz simpel so:ich habe einen Satz Zertifikate und möchte Sicherstellen das das Zertifikat auch installiert worden ist.
# Array von Fingerprints
$fingerprints = 'ABCD','DEFG','HIJK'
# Zeigt dir nur die Fingerprints an die **nicht** im persönlichen Store des Users liegen
compare @($fingerprints) @((gci Cert:\CurrentUser\My).Thumbprint) -PassThru | ?{$_.SideIndicator -eq '<='}
$fingerprints = 'ABCD','DEFG','HIJK'
$certs = gci Cert:\CurrentUser\My
$fingerprints | ?{$_ -notin $certs.Thumbprint}