Unprotect-CmsMessage
Entschlüsselt Inhalte, die mithilfe des Formats kryptografischer Nachrichtensyntax verschlüsselt wurden.
Syntax
Unprotect-CmsMessage
[-EventLogRecord] <EventLogRecord>
[[-To] <CmsMessageRecipient[]>]
[-IncludeContext]
[<CommonParameters>]
Unprotect-CmsMessage
[-Content] <string>
[[-To] <CmsMessageRecipient[]>]
[-IncludeContext]
[<CommonParameters>]
Unprotect-CmsMessage
[-Path] <string>
[[-To] <CmsMessageRecipient[]>]
[-IncludeContext]
[<CommonParameters>]
Unprotect-CmsMessage
[-LiteralPath] <string>
[[-To] <CmsMessageRecipient[]>]
[-IncludeContext]
[<CommonParameters>]
Beschreibung
Das cmdlet Unprotect-CmsMessage
entschlüsselt Inhalte, die mithilfe des CMS-Formats (Cryptographic Message Syntax) verschlüsselt wurden.
Die CMS-Cmdlets unterstützen die Verschlüsselung und Entschlüsselung von Inhalten mithilfe des IETF-Standardformats zum kryptografischen Schutz von Nachrichten, wie von RFC5652dokumentiert.
Der CMS-Verschlüsselungsstandard verwendet Kryptografie für öffentliche Schlüssel, bei denen die Schlüssel zum Verschlüsseln von Inhalten (dem öffentlichen Schlüssel) und die Schlüssel zum Entschlüsseln von Inhalten (dem privaten Schlüssel) getrennt sind. Ihr öffentlicher Schlüssel kann allgemein freigegeben werden und sind keine vertraulichen Daten. Wenn inhalte mit diesem öffentlichen Schlüssel verschlüsselt sind, kann nur Ihr privater Schlüssel sie entschlüsseln. Weitere Informationen finden Sie unter Kryptografie mit öffentlichem Schlüssel.
Unprotect-CmsMessage
entschlüsselt Inhalte, die im CMS-Format verschlüsselt wurden. Sie können dieses Cmdlet ausführen, um Inhalte zu entschlüsseln, die Sie verschlüsselt haben, indem Sie das Cmdlet Protect-CmsMessage
ausführen. Sie können Inhalte angeben, die Sie als Zeichenfolge entschlüsseln möchten, indem Sie die ID-Nummer des Verschlüsselungsereignisprotokolldatensatzes oder den Pfad zu den verschlüsselten Inhalten angeben. Das Cmdlet Unprotect-CmsMessage
gibt den entschlüsselten Inhalt zurück.
Unterstützung für Linux und macOS wurde in PowerShell 7.1 hinzugefügt.
Beispiele
Beispiel 1: Entschlüsseln einer Nachricht
Im folgenden Beispiel entschlüsseln Sie Inhalte, die sich im Literalpfad befinden, C:\Users\Test\Documents\PowerShell
. Für den Wert des erforderlichen To-Parameters verwendet dieses Beispiel den Fingerabdruck des Zertifikats, das zum Ausführen der Verschlüsselung verwendet wurde. Die entschlüsselte Nachricht "Versuchen Sie den neuen Befehl "Alle aufheben", ist das Ergebnis.
$parameters = @{
LiteralPath = "C:\Users\Test\Documents\PowerShell\Future_Plans.txt"
To = '0f 8j b1 ab e0 ce 35 1d 67 d2 f2 6f a2 d2 00 cl 22 z9 m9 85'
}
Unprotect-CmsMessage -LiteralPath @parameters
Try the new Break All command
Beispiel 2: Entschlüsseln einer verschlüsselten Ereignisprotokollnachricht
Im folgenden Beispiel wird ein verschlüsseltes Ereignis aus dem PowerShell-Ereignisprotokoll abgerufen und mithilfe von Unprotect-CmsMessage
entschlüsselt.
$event = Get-WinEvent Microsoft-Windows-PowerShell/Operational -MaxEvents 1 |
Where-Object Id -eq 4104
Unprotect-CmsMessage -EventLogRecord $event
Beispiel 3: Entschlüsseln von verschlüsselten Ereignisprotokollnachrichten mithilfe der Pipeline
Im folgenden Beispiel werden alle verschlüsselten Ereignisse aus dem PowerShell-Ereignisprotokoll abgerufen und mithilfe von Unprotect-CmsMessage
entschlüsselt.
Get-WinEvent Microsoft-Windows-PowerShell/Operational |
Where-Object Id -eq 4104 |
Unprotect-CmsMessage
Parameter
-Content
Gibt eine verschlüsselte Zeichenfolge oder eine Variable an, die eine verschlüsselte Zeichenfolge enthält.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-EventLogRecord
Gibt einen Ereignisprotokolldatensatz an, der eine verschlüsselte CMS-Nachricht enthält.
Typ: | PSObject |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-IncludeContext
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-LiteralPath
Gibt den Pfad zu verschlüsselten Inhalten an, die Sie entschlüsseln möchten. Im Gegensatz zu Pathwird der Wert LiteralPath- genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcardzeichen interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie ihn in einfache Anführungszeichen ein. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt den Pfad zu verschlüsselten Inhalten an, die Sie entschlüsseln möchten.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-To
Gibt einen oder mehrere CMS-Nachrichtenempfänger an, die in einem der folgenden Formate identifiziert werden:
- Ein tatsächliches Zertifikat (wie vom Zertifikatanbieter abgerufen).
- Pfad zu der Datei, die das Zertifikat enthält.
- Pfad zu einem Verzeichnis, das das Zertifikat enthält.
- Fingerabdruck des Zertifikats (wird verwendet, um im Zertifikatspeicher zu suchen).
- Antragstellername des Zertifikats (wird verwendet, um im Zertifikatspeicher zu suchen).
Typ: | CmsMessageRecipient[] |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können ein Objekt, das verschlüsselten Inhalt enthält, an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt die unverschlüsselte Nachricht zurück.