Unprotect-CmsMessage

使用密碼編譯訊息語法格式解密已加密的內容。

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>]

Description

Cmdlet 會 Unprotect-CmsMessage 使用密碼編譯訊息語法 (CMS) 格式來解密已加密的內容。

CMS Cmdlet 支援使用 IETF 標準格式加密和解密內容,以密碼編譯方式保護訊息,如RFC5652所述

CMS 加密標準會使用公鑰密碼編譯,其中用來加密內容的密鑰(公鑰)和用來解密內容的金鑰(私鑰)是分開的。 您的公鑰可以廣泛共用,而且不是敏感數據。 如果有任何內容使用此公鑰加密,則只有您的私鑰才能解密。 如需詳細資訊,請參閱 公鑰密碼編譯

Unprotect-CmsMessage 解密以 CMS 格式加密的內容。 您可以執行此 Cmdlet,藉由執行 Protect-CmsMessage Cmdlet 來解密已加密的內容。 您可以藉由加密事件記錄識別碼或加密內容的路徑,指定您想要解密為字串的內容。 Cmdlet 會 Unprotect-CmsMessage 傳回解密的內容。

PowerShell 7.1 已新增 Linux 和 macOS 的支援。

範例

範例 1:解密訊息

在下列範例中,您會將位於常值路徑 C:\Users\Test\Documents\PowerShell的內容解密。 針對必要 To 參數的值,此範例會使用用來執行加密的憑證指紋。 解密的訊息「試用新的全部中斷命令」是結果。

$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

範例 2:解密加密的事件記錄檔訊息

下列範例會從 PowerShell 事件記錄檔取得加密事件,並使用 Unprotect-CmsMessage解密它。

$event = Get-WinEvent Microsoft-Windows-PowerShell/Operational -MaxEvents 1 |
    Where-Object Id -eq 4104
Unprotect-CmsMessage -EventLogRecord $event

範例 3:使用管線解密加密的事件記錄檔訊息

下列範例會從 PowerShell 事件記錄檔取得所有加密的事件,並使用 將其 Unprotect-CmsMessage解密。

Get-WinEvent Microsoft-Windows-PowerShell/Operational |
    Where-Object Id -eq 4104 |
    Unprotect-CmsMessage

參數

-Content

指定加密字串,或包含加密字串的變數。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-EventLogRecord

指定包含 CMS 加密訊息的事件記錄檔記錄。

Type:PSObject
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-IncludeContext

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

指定要解密之加密內容的路徑。 與 Path 不同,LiteralPath 的值會完全依照其類型一樣使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Path

指定要解密之加密內容的路徑。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-To

指定以下欄任何格式識別的一或多個 CMS 郵件收件者:

  • 實際憑證(如從憑證提供者擷取)。
  • 包含憑證之檔案的路徑。
  • 包含憑證之目錄的路徑。
  • 憑證的指紋(用來查看證書存儲)。
  • 憑證的主體名稱(用來查看證書存儲)。
Type:CmsMessageRecipient[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

EventLogRecord

String

您可以使用管線將包含加密內容的物件傳送至此 Cmdlet。

輸出

String

此 Cmdlet 會傳回未加密的訊息。