Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Anbietername
Zertifikat
Antriebe
Cert:
Fähigkeiten
SollteProzess
Kurzbeschreibung
Bietet Zugriff auf X.509-Zertifikatspeicher und -zertifikate in PowerShell.
Detaillierte Beschreibung
Mit dem PowerShell-Zertifikat Anbieter können Sie Zertifikate und Zertifikatspeicher in PowerShell abrufen, hinzufügen, ändern, löschen und löschen.
Das Zertifikatlaufwerk ist ein hierarchischer Namespace, der die Zertifikatsspeicher und Zertifikate auf Ihrem Computer enthält.
Der Zertifikatanbieter unterstützt die folgenden Cmdlets, die in diesem Artikel behandelt werden.
- Get-Standort
- Set-Standort
- Get-Artikel
- Get-ChildItem
- Invoke-Element
- Verschieben-Element
- Neues Element-
- Element entfernen
- Get-ItemProperty
- Set-ItemEigenschaft
- Clear-ItemProperty
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
Typen, die von diesem Anbieter verfügbar gemacht werden
Das Zertifikatlaufwerk macht die folgenden Typen verfügbar.
Speicherorte (Microsoft.PowerShell.Commands.X509StoreLocation), bei denen es sich um Container auf hoher Ebene handelt, die die Zertifikate für den aktuellen Benutzer und für alle Benutzer gruppieren. Jedes System verfügt über einen Speicherort vom Typ "CurrentUser" und "LocalMachine (alle Benutzer)".
Zertifikatspeicher (System.Security.Cryptography.X509Certificates.X509Store), bei denen es sich um physische Speicher handelt, in denen Zertifikate gespeichert und verwaltet werden.
X.509 System.Security.Cryptography.X509Certificates.X509Certificate2-Zertifikate , die jeweils ein X.509-Zertifikat auf dem Computer darstellen. Zertifikate werden durch ihre Fingerabdrucke identifiziert.
Navigieren im Zertifikatlaufwerk
Der Certificate-Anbieter macht den Zertifikatnamespace als Cert: Laufwerk in PowerShell verfügbar. Mit diesem Befehl wird der Set-Location Befehl verwendet, um den aktuellen Speicherort in den Stammzertifikatspeicher im Speicherort des LocalMachine-Speichers zu ändern. Verwenden Sie einen umgekehrten Schrägstrich (\) oder einen Schrägstrich (/), um eine Ebene des Cert: Laufwerks anzugeben.
Set-Location Cert:
Sie können auch mit dem Zertifikatanbieter von jedem anderen PowerShell-Laufwerk aus arbeiten. Um auf einen Alias von einem anderen Speicherort zu verweisen, verwenden Sie im Pfad den Laufwerksnamen Cert:.
PS Cert:\> Set-Location -Path LocalMachine\Root
Um zu einem Dateisystemlaufwerk zurückzukehren, geben Sie den Laufwerknamen ein. Geben Sie beispielsweise Folgendes ein:
Set-Location C:
Hinweis
PowerShell verwendet Aliase, damit Sie auf vertraute Weise mit Providerpfaden arbeiten können. Befehle wie dir und ls sind jetzt Aliase für Get-ChildItem-, cd ist ein Alias für Set-Location-. und pwd ist ein Alias für Get-Location.
Anzeigen des Inhalts des Zertifikats: Laufwerk
Dem Cmdlet auf dem Laufwerk wurden DnsName neue dynamische Parameter, EKU, SSLServerAuthenticationExpiringInDays, und Get-ChildItem hinzugefügt.Cert: Die neuen dynamischen Parameter sind in Windows PowerShell 3.0 und neueren PowerShell-Versionen verfügbar. Die Anbieterparameter funktionieren mit IIS 8.0 unter Windows Server 2012 und höher.
Mit diesem Befehl wird das Get-ChildItem Cmdlet verwendet, um die Zertifikatspeicher am Speicherort des CurrentUser-Zertifikatspeichers anzuzeigen.
Wenn Sie sich nicht im Cert: Laufwerk befinden, verwenden Sie einen absoluten Pfad.
PS Cert:\CurrentUser\> Get-ChildItem
Anzeigen von Zertifikateigenschaften innerhalb des Zertifikats: Laufwerk
In diesem Beispiel wird ein Zertifikat mit Get-Item und in einer Variablen gespeichert.
Das Beispiel zeigt die neuen Zertifikatskripteigenschaften (DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer) mithilfe von Select-Object.
$c = Get-Item cert:\LocalMachine\My\52A149D0393CE8A8D4AF0B172ED667A9E3A1F44E
$c | Format-List DnsNameList, EnhancedKeyUsageList, SendAsTrustedIssuer
DnsNameList : {SERVER01.contoso.com}
EnhancedKeyUsageList : {WiFi-Machine (1.3.6.1.4.1.311.42.2.6),
Client Authentication (1.3.6.1.5.5.7.3.2)}
SendAsTrustedIssuer : False
Suchen aller CodeSigning-Zertifikate
Mit diesem Befehl werden die Parameter CodeSigningCert und Recurse des Get-ChildItem Cmdlets verwendet, um alle Zertifikate auf dem Computer abzurufen, die über eine Codesignaturberechtigung verfügen.
Get-ChildItem -Path cert: -CodeSigningCert -Recurse
Suchen abgelaufener Zertifikate
Dieser Befehl verwendet den ExpiringInDays-Parameter des Get-ChildItem Cmdlets, um Zertifikate abzurufen, die innerhalb der nächsten 30 Tage ablaufen.
Get-ChildItem -Path cert:\LocalMachine\WebHosting -ExpiringInDays 30
Server-SSL-Zertifikate suchen
Dieser Befehl verwendet den SSLServerAuthentication-Parameter des Get-ChildItem Cmdlets, um alle Server-SSL-Zertifikate in den Speichern "My" und "WebHosting" abzurufen.
Get-ChildItem -Path cert:\LocalMachine\My, cert:\LocalMachine\WebHosting `
-SSLServerAuthentication
Suchen abgelaufener Zertifikate auf Remotecomputern
Dieser Befehl verwendet das cmdlet Invoke-Command zum Ausführen eines Get-ChildItem Befehls auf den Computern Srv01 und Srv02. Ein Wert von null (0) im Parameter ExpiringInDays ruft Zertifikate auf den Computern Srv01 und Srv02 ab, die abgelaufen sind.
Invoke-Command -ComputerName Srv01, Srv02 {Get-ChildItem -Path cert:\* `
-Recurse -ExpiringInDays 0}
Kombinieren von Filtern zum Auffinden einer bestimmten Gruppe von Zertifikaten
Mit diesem Befehl werden alle Zertifikate im Speicherort des LocalMachine-Speichers abgerufen, die über die folgenden Attribute verfügen:
- "fabrikam" in ihrem DNS-Namen
- "Client-Authentifizierung" in ihrer EKU
- ein Wert von
$truefür die eigenschaft SendAsTrustedIssuer - verfallen nicht innerhalb der nächsten 30 Tage.
Die eigenschaft NotAfter speichert das Ablaufdatum des Zertifikats.
Get-ChildItem -Path cert:\* -Recurse -DNSName "*fabrikam*" `
-EKU "*Client Authentication*" | Where-Object {
$_.SendAsTrustedIssuer -and `
$_.NotAfter -gt (get-date).AddDays.(30)
}
Öffnen des MMC-Snap-Ins "Zertifikate"
Das Invoke-Item Cmdlet verwendet die Standardanwendung, um einen von Ihnen angegebenen Pfad zu öffnen. Bei Zertifikaten ist die Standardanwendung das MMC-Snap-In "Zertifikate".
Mit diesem Befehl wird das MMC-Snap-In "Zertifikate" geöffnet, um das angegebene Zertifikat zu verwalten.
Invoke-Item cert:\CurrentUser\my\6B8223358119BB08840DEE50FD8AF9EA776CE66B
Kopieren von Zertifikaten
Das Kopieren von Zertifikaten wird vom Zertifikatanbieter nicht unterstützt. Wenn Sie versuchen, ein Zertifikat zu kopieren, wird dieser Fehler angezeigt.
$path = "Cert:\LocalMachine\Root\E2C0F6662D3C569705B4B31FE2CBF3434094B254"
PS Cert:\LocalMachine\> Copy-Item -Path $path -Destination .\CA\
Copy-Item : Provider operation stopped because the provider does not support
this operation.
At line:1 char:1
+ Copy-Item -Path $path -Destination .\CA\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotImplemented: (:) [Copy-Item],
PSNotSupportedException
+ FullyQualifiedErrorId : NotSupported,
Microsoft.PowerShell.Commands.CopyItemCommand
Verschieben von Zertifikaten
Verschieben aller SSL Server-Authentifizierungszertifikate in den WebHosting-Speicher
Mit diesem Befehl wird das Move-Item Cmdlet verwendet, um ein Zertifikat aus dem My-Speicher in den WebHosting-Store zu verschieben.
Move-Item verschiebt keine Zertifikatspeicher und keine Zertifikate an einen anderen Speicherort, z. B. das Verschieben eines Zertifikats von LocalMachine nach CurrentUser. Das Move-Item Cmdlet verschiebt Zertifikate, aber keine privaten Schlüssel.
Mit diesem Befehl wird der SSLServerAuthentication-Parameter des Get-ChildItem Cmdlets verwendet, um SSL-Serverauthentifizierungszertifikate im MY-Zertifikatspeicher abzurufen.
Die zurückgegebenen Zertifikate werden an das Move-Item Cmdlet weitergeleitet, das die Zertifikate in den WebHosting-Speicher verschiebt.
Get-ChildItem cert:\LocalMachine\My -SSLServerAuthentication | Move-Item `
-Destination cert:\LocalMachine\WebHosting
Löschen von Zertifikaten und privaten Schlüsseln
Das Remove-Item Cmdlet entfernt die von Ihnen angegebenen Zertifikate. Der -DeleteKey dynamic-Parameter löscht den privaten Schlüssel.
Löschen eines Zertifikats aus dem Zertifizierungsstellenspeicher
Mit diesem Befehl wird ein Zertifikat aus dem Zertifikatspeicher der Zertifizierungsstelle gelöscht, der zugeordnete private Schlüssel bleibt jedoch erhalten.
Im laufwerk Cert: unterstützt das cmdlet Remove-Item nur den DeleteKey, Path, WhatIf, und Confirm parameter. Alle anderen Parameter werden ignoriert.
Remove-Item cert:\LocalMachine\CA\5DDC44652E62BF9AA1116DC41DE44AB47C87BDD0
Löschen eines Zertifikats mithilfe von Wildcards im DNS-Namen
Mit diesem Befehl werden alle Zertifikate gelöscht, deren DNS-Name "Fabrikam" enthält. Es verwendet den DNSName Parameter des Cmdlets Get-ChildItem, um die Zertifikate und das cmdlet Remove-Item abzurufen, um sie zu löschen.
Get-ChildItem -Path cert:\LocalMachine -DnsName *Fabrikam* | Remove-Item
Löschen privater Schlüssel von einem Remotecomputer
Diese Reihe von Befehlen ermöglicht die Delegierung und löscht dann das Zertifikat und den zugehörigen privaten Schlüssel auf einem Remotecomputer. Um einen privaten Schlüssel auf einem Remotecomputer zu löschen, müssen Sie delegierte Anmeldeinformationen verwenden.
Verwenden Sie das Cmdlet Enable-WSManCredSSP, um die Authentifizierung des Credential Security Service Provider (CredSSP) auf einem Client auf dem S1-Remotecomputer zu aktivieren.
CredSSP erlaubt delegierte Authentifizierung.
Enable-WSManCredSSP -Role Client -DelegateComputer S1
Verwenden Sie das Cmdlet Connect-WSMan, um den S1-Computer mit dem WinRM-Dienst auf dem lokalen Computer zu verbinden. Nach Abschluss dieses Befehls wird der S1-Computer im lokalen WSMan: Laufwerk in PowerShell angezeigt.
Connect-WSMan -ComputerName S1 -Credential Domain01\Admin01
Jetzt können Sie das Cmdlet Set-Item auf dem Laufwerk WSMan: verwenden, um das CredSSP-Attribut für den WinRM-Dienst zu aktivieren.
Set-Item -Path WSMan:\S1\Service\Auth\CredSSP -Value $true
Starten Sie mit dem New-PSSession Cmdlet eine Remotesitzung auf dem s1-Computer, und geben Sie die CredSSP-Authentifizierung an. Speichert die Sitzung in der variablen $s.
$s = New-PSSession S1 -Authentication CredSSP -Credential Domain01\Admin01
Verwenden Sie schließlich das cmdlet Invoke-Command, um einen Remove-Item Befehl in der Sitzung in der variablen $s auszuführen. Der Befehl Remove-Item verwendet den parameter DeleteKey, um den privaten Schlüssel zusammen mit dem angegebenen Zertifikat zu entfernen.
Invoke-Command -Session $s { Remove-Item `
-Path cert:\LocalMachine\My\D2D38EBA60CAA1C12055A2E1C83B15AD450110C2 `
-DeleteKey
}
Abgelaufene Zertifikate löschen
Dieser Befehl verwendet den ExpiringInDays-Parameter des Get-ChildItem Cmdlets mit dem Wert 0, um abgelaufene Zertifikate im WebHosting-Speicher abzurufen.
Die Variable, die die zurückgegebenen Zertifikate enthält, wird an das Cmdlet Remove-Item weitergeleitet, das sie löscht. Der Befehl verwendet den parameter DeleteKey, um den privaten Schlüssel zusammen mit dem Zertifikat zu löschen.
$expired = Get-ChildItem cert:\LocalMachine\WebHosting -ExpiringInDays 0
$expired | Remove-Item -DeleteKey
Erstellen von Zertifikaten
Das New-Item Cmdlet erstellt keine neuen Zertifikate im Zertifikatanbieter . Verwenden Sie das Cmdlet New-SelfSignedCertificate, um ein Zertifikat zu Testzwecken zu erstellen.
Erstellen von Zertifikatspeichern
Auf dem Laufwerk "Cert:" erstellt das New-Item Cmdlet Zertifikatspeicher am Speicherort "LocalMachine". Es unterstützt die parameter Name, Path, WhatIfund Confirm Parameter. Alle anderen Parameter werden ignoriert. Der Befehl gibt einen System.Security.Cryptography.X509Certificates.X509Store- zurück, der den neuen Zertifikatspeicher darstellt.
Mit diesem Befehl wird ein neuer Zertifikatspeicher mit dem Namen "CustomStore" am Speicherort des LocalMachine-Speichers erstellt.
New-Item -Path cert:\LocalMachine\CustomStore
Erstellen eines neuen Zertifikatspeichers auf einem Remotecomputer
Mit diesem Befehl wird ein neuer Zertifikatspeicher mit dem Namen "HostingStore" am Speicherort "LocalMachine" auf dem Computer "Server01" erstellt.
Der Befehl verwendet das Cmdlet Invoke-Command, um einen New-Item Befehl auf dem Server01-Computer auszuführen. Der Befehl gibt einen System.Security.Cryptography.X509Certificates.X509Store- zurück, der den neuen Zertifikatspeicher darstellt.
Invoke-Command { New-Item -Path cert:\LocalMachine\CustomStore } `
-ComputerName Server01
Erstellen von Clientzertifikaten für WS-Man
Dieser Befehl erstellt ClientCertificate Eintrag, der vom WS-Management-Client verwendet werden kann. Das neue ClientCertificate- wird unter dem verzeichnis ClientCertificate als "ClientCertificate_1234567890" angezeigt. Alle Parameter sind obligatorisch. Der Aussteller muss der Fingerabdruck des Ausstellerzertifikats sein.
$cred = Get-Credential
New-Item -Path WSMan:\localhost\ClientCertificate `
-Issuer 1b3fd224d66c6413fe20d21e38b304226d192dfe `
-URI wmicimv2/* -Credential $cred
Löschen von Zertifikatspeichern
Löschen eines Zertifikatspeichers von einem Remotecomputer
Dieser Befehl verwendet das Cmdlet Invoke-Command zum Ausführen eines Remove-Item Befehls auf den Computern S1 und S2. Der Befehl Remove-Item enthält den parameter Recurse, der die Zertifikate im Speicher löscht, bevor er den Speicher löscht.
Invoke-Command { Remove-Item -Path cert:\LocalMachine\TestStore -Recurse } `
-ComputerName S1, S2
Dynamische Parameter
Dynamische Parameter sind Cmdlet-Parameter, die von einem PowerShell-Anbieter hinzugefügt werden und nur verfügbar sind, wenn das Cmdlet im vom Anbieter aktivierten Laufwerk verwendet wird. Diese Parameter sind in allen Unterverzeichnissen des Zertifikatanbieters gültig, aber nur für Zertifikate wirksam.
Hinweis
Parameter, die eine Filterung für die EnhancedKeyUsageList Eigenschaft ausführen, geben auch Elemente mit einem leeren EnhancedKeyUsageList Eigenschaftswert zurück.
Zertifikate mit einem leeren EnhancedKeyUsageList- können für alle Zwecke verwendet werden.
ItemType-Zeichenfolge <>
Mit diesem Parameter können Sie den Typ des Elements angeben, das von erstellt wurde New-Item.
In einem Certificate Laufwerk sind die folgenden Werte zulässig:
- Zertifikatsanbieter
- Zertifikat
- Speichern
- Geschäftsstandort
Unterstützte Cmdlets
CodeSigningCert <System.Management.Automation.SwitchParameter>
Unterstützte Cmdlets
Dieser Parameter ruft Zertifikate ab, deren EnhancedKeyUsageList-Eigenschaftswert "Code Signing " enthält.
DnsName <Microsoft.PowerShell.Commands.DnsNameRepresentation>
Unterstützte Cmdlets
Dieser Parameter ruft Zertifikate ab, die über den angegebenen Domänennamen oder das angegebene Namensmuster in der DNSNameList- Eigenschaft des Zertifikats verfügen. Der Wert dieses Parameters kann entweder "Unicode" oder "ASCII" sein. Punycode-Werte werden in Unicode konvertiert. Platzhalterzeichen (*) sind zulässig.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
EKU <System.String->
Unterstützte Cmdlets
Mit diesem Parameter werden Zertifikate abgerufen, die den angegebenen Text oder das angegebene Textmuster in der EnhancedKeyUsageList Eigenschaft des Zertifikats aufweisen. Platzhalterzeichen (*) sind zulässig. Die EnhancedKeyUsageList Eigenschaft enthält den Anzeigenamen und die OID-Felder der EKU.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
ExpiringInDays <System.Int32>
Unterstützte Cmdlets
Dieser Parameter ruft Zertifikate ab, die in oder vor der angegebenen Anzahl von Tagen ablaufen. Ein Wert von 0 (null) ruft Zertifikate ab, die abgelaufen sind.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
SSLServerAuthentication <System.Management.Automation.SwitchParameter>
Unterstützte Cmdlets
Ruft nur Serverzertifikate für SSL-Webhosting ab. Dieser Parameter ruft Zertifikate ab, deren Eigenschaftswert "Serverauthentifizierung" enthält EnhancedKeyUsageList .
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
DeleteKey <System.Management.Automation.SwitchParameter>
Unterstützte Cmdlets
Dieser Parameter löscht den zugeordneten privaten Schlüssel, wenn es das Zertifikat löscht.
Von Bedeutung
Um einen privaten Schlüssel zu löschen, der Cert:\CurrentUser einem Benutzerzertifikat im Speicher auf einem Remotecomputer zugeordnet ist, müssen Sie delegierte Anmeldeinformationen verwenden. Das cmdlet Invoke-Command unterstützt die Delegierung von Anmeldeinformationen mithilfe des CredSSP- Parameters. Sie sollten sicherheitsrisiken berücksichtigen, bevor Sie Remove-Item mit Invoke-Command und der Delegierung von Anmeldeinformationen verwenden.
Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.
Skripteigenschaften
Neue Skripteigenschaften wurden dem x509Certificate2-Objekt hinzugefügt, das die Zertifikate darstellt, um das Durchsuchen und Verwalten der Zertifikate zu vereinfachen.
DnsNameList: Um dieDnsNameListEigenschaft aufzufüllen, kopiert der Zertifikatanbieter den Inhalt aus dem DNSName-Eintrag in der Erweiterung SubjectAlternativeName (SAN). Wenn die SAN-Erweiterung leer ist, wird die Eigenschaft mit Inhalten aus dem Feld "Betreff" des Zertifikats aufgefüllt.EnhancedKeyUsageList: Zum Auffüllen derEnhancedKeyUsageListEigenschaft kopiert der Zertifikatanbieter die OID-Eigenschaften des Felds EnhancedKeyUsage (EKU) im Zertifikat und erstellt einen Anzeigenamen dafür.SendAsTrustedIssuer: Um dieSendAsTrustedIssuerEigenschaft aufzufüllen, kopiert der Zertifikatanbieter dieSendAsTrustedIssuerEigenschaft aus dem Zertifikat. Weitere Informationen finden Sie unter Verwaltung vertrauenswürdiger Aussteller für die Clientauthentifizierung.
Mit diesen neuen Features können Sie basierend auf ihren DNS-Namen und Ablaufdaten nach Zertifikaten suchen und Client- und Serverauthentifizierungszertifikate anhand des Werts ihrer EKU-Eigenschaften (Enhanced Key Usage) unterscheiden.
Verwendung der Pipeline
Cmdlets von Anbietern akzeptieren Pipeline-Eingaben. Sie können die Aufgabe mithilfe der Pipeline vereinfachen, indem Sie Anbieterdaten von einem Cmdlet an ein anderes Anbieter-Cmdlet senden. Weitere Informationen zur Verwendung der Pipeline mit Anbieter-Cmdlets finden Sie in den Cmdlet-Referenzen in diesem Artikel.
Hilfe erhalten
Ab Windows PowerShell 3.0 können Sie benutzerdefinierte Hilfethemen für Anbieter-Cmdlets abrufen, die erläutern, wie sich diese Cmdlets in einem Dateisystemlaufwerk verhalten.
Um die Hilfethemen abzurufen, die für das Dateisystemlaufwerk angepasst sind, führen Sie einen Befehl "Get-Help" auf einem Dateisystemlaufwerk aus, oder verwenden Sie den -Path Parameter von Get-Help-, um ein Dateisystemlaufwerk anzugeben.
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path cert: