Aktuelles AD-Userzertifikat mit Powershell herausfiltern
Hallo,
ich würde gerne durch den LOGON-Script das jeweilige Benutzerzertifikat erneuern
es funktioniert leider nicht. Bzw das Syntax "Where-object" ist irgendwie fehlerhaft. Die Erneuerung des Zertifikats funktioniert an sich ...
Ich möchte also das Zertifikat als Ergebnis bekommen wo diese Zeile vorhanden ist:
In der 2. Zeile versuche ich zwischen normalen und WLAN Zertifikat zu unterscheiden ...
Wie würdet ihr die Abfrage gestalten, um nur das normale Benutzerzertifikat als Ergebnis zu liefern, das wir durch das Script erneuern möchten.
Der Befehl liefert alle Zertifikat. Diese Trefferliste möchte ich weiter eingrenzen.
Gr. I.
ich würde gerne durch den LOGON-Script das jeweilige Benutzerzertifikat erneuern
$upn =whoami /upn
$cert = get-childitem -path cert:\CurrentUser\my\ | format-list | Where-Object EnhancedKeyUsageList -contains "*Sichere E-Mail*"}
&certreq @('-Enroll', '-user', '-q', '-cert', $cert.SerialNumber, 'Renew', 'ReuseKeys')
es funktioniert leider nicht. Bzw das Syntax "Where-object" ist irgendwie fehlerhaft. Die Erneuerung des Zertifikats funktioniert an sich ...
Ich möchte also das Zertifikat als Ergebnis bekommen wo diese Zeile vorhanden ist:
EnhancedKeyUsageList : {Clientauthentifizierung (1.3.6.1.5.5.7.3.2), Sichere E-Mail (1.3.6.1.5.5.7.3.4), Verschlüsselndes Dateisystem (1.3.6.1.4.1.311.10.3.4)}
In der 2. Zeile versuche ich zwischen normalen und WLAN Zertifikat zu unterscheiden ...
Wie würdet ihr die Abfrage gestalten, um nur das normale Benutzerzertifikat als Ergebnis zu liefern, das wir durch das Script erneuern möchten.
Der Befehl
get-childitem -path cert:\CurrentUser\my\ | format-list DnsNameList, Issuer, EnhancedKeyUsageList
Gr. I.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2571694829
Url: https://administrator.de/forum/aktuelles-ad-userzertifikat-mit-powershell-herausfiltern-2571694829.html
Ausgedruckt am: 06.06.2025 um 00:06 Uhr
2 Kommentare
Neuester Kommentar
Servus.
eine Methode wäre anhand des Zertifikats-Templates der Zertifizierungsstelle "das gewünschte" Benutzer-Zertfikat zu bestimmen.
Wenn also bspw. das Benutzer-Zertifikatstemplate deiner CA "Benutzer" heißt dann
Du kannst das natürlich auch nach anderen Kriterien des Zertifikats und Extensions bestimmen, kommt halt darauf an was bei euch eindeutig ist. Das was du oben machen wolltest, funktioniert mit dem String-Vergleich nicht weil du da Objects bekommst und die sind je nach System auch Sprachabhängig, hier benutzt du dann am besten gleich den OID Wert zum Vergleich.
Der Enrollment agent läuft alle 8 Stunden einmal an um ausstehende renewal Aufträge zu verarbeiten, kann man aber auch per
https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-sec ...

Grüße Uwe
eine Methode wäre anhand des Zertifikats-Templates der Zertifizierungsstelle "das gewünschte" Benutzer-Zertfikat zu bestimmen.
Wenn also bspw. das Benutzer-Zertifikatstemplate deiner CA "Benutzer" heißt dann
Get-ChildItem Cert:\CurrentUser\My | ?{$_.Extensions | ?{$_.Oid.Value -eq '1.3.6.1.4.1.311.21.7'} | %{$_.Format(0) -match '(Vorlage|Template)=Benutzer'}} | sort NotAfter -Desc | select -F 1
$upn = whoami /upn
Get-ChildItem Cert:\CurrentUser\My | ?{$_.EnhancedKeyUsageList.ObjectId -contains '1.3.6.1.5.5.7.3.4' -and $_.Subject -like "E=$upn*"} | sort NotAfter -Desc | select -F 1
ich würde gerne durch den LOGON-Script das jeweilige Benutzerzertifikat erneuern
Warum willst du es manuell erneuern, weil sich die E-Mail geändert hat? Nur zur Info falls nicht bekannt: Das erneuert sich eigentlich auch automatisch z.B. 6 Wochen vor Ablauf wenn man es passend in der GPO und Cert-Template einstellt.Der Enrollment agent läuft alle 8 Stunden einmal an um ausstehende renewal Aufträge zu verarbeiten, kann man aber auch per
certutil -pulse
triggern.https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-sec ...

Grüße Uwe