Unprotect-CmsMessage

使用加密消息语法格式解密已加密的内容。

语法

ByWinEvent (默认值)

Unprotect-CmsMessage
    [-EventLogRecord] <EventLogRecord>
    [[-To] <CmsMessageRecipient[]>]
    [-IncludeContext]
    [<CommonParameters>]

ByContent

Unprotect-CmsMessage
    [-Content] <string>
    [[-To] <CmsMessageRecipient[]>]
    [-IncludeContext]
    [<CommonParameters>]

ByPath

Unprotect-CmsMessage
    [-Path] <string>
    [[-To] <CmsMessageRecipient[]>]
    [-IncludeContext]
    [<CommonParameters>]

ByLiteralPath

Unprotect-CmsMessage
    [-LiteralPath] <string>
    [[-To] <CmsMessageRecipient[]>]
    [-IncludeContext]
    [<CommonParameters>]

说明

Unprotect-CmsMessage cmdlet 解密已使用加密消息语法 (CMS) 格式加密的内容。

CMS cmdlet 支持使用 IETF 标准格式加密和解密内容,以加密方式保护消息,如 RFC5652所述。

CMS 加密标准使用公钥加密,其中用于加密内容的密钥(公钥)和用于解密内容的密钥(私钥)是分开的。 公钥可以广泛共享,并且不是敏感数据。 如果有任何内容使用此公钥进行加密,则只有私钥可以解密它。 有关详细信息,请参阅 公钥加密

Unprotect-CmsMessage 解密已采用 CMS 格式加密的内容。 可以通过运行 Protect-CmsMessage cmdlet 来解密已加密的内容。 可以通过加密事件日志 ID 号或加密内容的路径指定要解密为字符串的内容。 Unprotect-CmsMessage cmdlet 返回解密的内容。

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

指定加密字符串或包含加密字符串的变量。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByContent
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-EventLogRecord

指定包含 CMS 加密消息的事件日志记录。

参数属性

类型:PSObject
默认值:None
支持通配符:False
不显示:False

参数集

ByWinEvent
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-IncludeContext

确定是否在其原始上下文中包含解密的内容,而不是仅输出解密的内容。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-LiteralPath

指定要解密的加密内容的路径。 与 路径不同,LiteralPath 的值与类型化完全相同。 不会将任何字符解释为通配字符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByLiteralPath
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Path

指定要解密的加密内容的路径。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

ByPath
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-To

指定一个或多个 CMS 消息收件人,并使用以下任何格式识别这些收件人:

  • 实际证书(从证书提供程序检索)。
  • 包含证书的文件的路径。
  • 包含证书的目录的路径。
  • 证书的指纹(用于在证书存储中查找)。
  • 证书的使用者名称(用于在证书存储中查找)。

参数属性

类型:

CmsMessageRecipient[]

默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:1
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

EventLogRecord

String

可以通过管道将包含加密内容的对象传递给此 cmdlet。

输出

String

此 cmdlet 返回未加密的消息。