Hallo Community,
heute erreichte mich eine Anfrage, welche ich euch nicht vorenthalten möchte.
(Das Beispiel ist neutralisiert um die persönlichen Daten zu entfernen)
-----------------------------------------------------------------------------------------------------------------------
ich bin auf einen Fehler in der Powershell Doku gestoßen oder zu dumm, sie zu lesen?
Ich wollte ein bestimmtes Zertifikat aus dem Zertifikatsspeicher des angemeldeten Benutzers löschen.
PS D:\Temp> set-location cert:
PS cert:\> cd CurrentUser
PS cert:\CurrentUser> cd my
PS cert:\CurrentUser\my> dir
Verzeichnis: Microsoft.PowerShell.Security\Certificate::CurrentUser\my
Thumbprint Subject
---------- -------
73859882FD2C52D0D759C90087192D88CD06C84E E=Vorname.Nachname@email.de, CN=Vorname Nachname, OU=Stadt,DC=...
D0D759C9008666CCFD18254860B9D93F3A6EBE05 CN=Vorname Nachname
0B9D93F3A6EBE0511BF88632B5CE167C62C87F4E E=Vorname.Nachname@email.de, CN=Vorname Nachname, OU=Stadt, DC=...
PS cert:\CurrentUser\my>
PS cert:\CurrentUser\my> dir | Where-Object {$_.subject -eq "CN=Vorname Nachname"} | Remove-Item
Remove-Item : Die Ausführung des Anbieters wurde beendet, da der Anbieter diesen Vorgang nicht unterstützt.
Bei Zeile:1 Zeichen:73
+ dir | Where-Object {$_.subject -eq "CN=Vorname Nachname"} | Remove-Item <<<<
In der Powershell Hilfe steht jedoch explizit drin, dass das Löschen von Zertifikaten unterstützt ist.
DETAILED DESCRIPTION
The Remove-Item cmdlet deletes one or more items. Because it is supported by many providers, it can delete many different types of items, including files, directories, registry keys, variables, aliases, certificates, and functions.
Also wurde .Net bemüht:
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store "My","CurrentUser"
$store.Open("ReadWrite")
PS D:\Temp> set-location cert:\CurrentUser\My
$certs = @(dir) | where-object {$_.subject -eq "CN=Vorname Nachname"}
foreach ($cert in $certs) {$store.Remove($cert)}
$store.Close()
-----------------------------------------------------------------------------------------------------------------------
Die Frage lautet also stimmt die Onlinehilfe nicht oder ist das erste Skript falsch?
Die Antwort:
Die Onlinehilfe ist hier leider falsch 
Der Kollege Lee Holmes hat hierzu bereits einen Artikel verfasst in dem dies auch besschrieben wird.
Der Artikel lautet "Removing Certificates from the Certificate Store".
Die Kernaussage lautet: Der Provider cert: stellt einen "lesenden" Zugriff bereit. Dies reicht aus um alles mit bestehenden Zertifkikaten zu machen, aber eben nicht um Löschaktionen durchzuführen.
Zusammengefasst also ein Fehler, der auch anderen passieren kann
und hoffentlich in der nächsten Version besser dokumentiert ist.
Rolf