Get-CmsMessage

获取已使用加密消息语法格式进行加密的内容。

语法

Get-CmsMessage
   [-Content] <String>
   [<CommonParameters>]
Get-CmsMessage
   [-Path] <String>
   [<CommonParameters>]
Get-CmsMessage
   [-LiteralPath] <String>
   [<CommonParameters>]

说明

Get-CmsMessage cmdlet 获取已使用加密消息语法 (CMS) 格式进行加密的内容。

CMS cmdlet 使用加密保护消息的 IETF 格式对内容的加密和解密提供支持,如 RFC5652 中所述。

CMS 加密标准采用公钥加密系统,其中用来加密内容的密匙(公匙)和用来解密内容的密匙(私匙)是分离的。 公匙可以广泛共享,它不是敏感数据。 如果用此公匙加密了任何内容,只有你的私匙可以解密它。 有关详细信息,请参阅 Public-key cryptography(公钥加密)。

Get-CmsMessage 获取已采用 CMS 格式加密的内容。 它不会对内容进行解密或取消保护。 可以运行此 cmdlet 来获取通过运行 Protect-CmsMessage cmdlet 加密的内容。 可以指定要解密为字符串的内容或旁通到加密内容。 如果拥有用于加密内容的文档加密证书的信息,可以通过管道将 Get-CmsMessage 的结果传递到 Unprotect-CmsMessage 以解密内容。

PowerShell 7.1 中添加了对 Linux 和 macOS 的支持。

示例

示例 1:获取加密的内容

$Msg = Get-CmsMessage -Path "C:\Users\Test\Documents\PowerShell\Future_Plans.txt"
$Msg.Content

-----BEGIN CMS-----
MIIBqAYJKoZIhvcNAQcDoIIBmTCCAZUCAQAxggFQMIIBTAIBADA0MCAxHjAcBgNVBAMBFWxlZWhv
bG1AbGljcm9zb2Z0LmNvbQIQQYHsbcXnjIJCtH+OhGmc1DANBgkqhkiG9w0BAQcwAASCAQAnkFHM
proJnFy4geFGfyNmxH3yeoPvwEYzdnsoVqqDPAd8D3wao77z7OhJEXwz9GeFLnxD6djKV/tF4PxR
E27aduKSLbnxfpf/sepZ4fUkuGibnwWFrxGE3B1G26MCenHWjYQiqv+Nq32Gc97qEAERrhLv6S4R
G+2dJEnesW8A+z9QPo+DwYP5FzD0Td0ExrkswVckpLNR6j17Yaags3ltNXmbdEXekhi6Psf2MLMP
TSO79lv2L0KeXFGuPOrdzPRwCkV0vNEqTEBeDnZGrjv/5766bM3GW34FXApod9u+VSFpBnqVOCBA
DVDraA6k+xwBt66cV84AHLkh0kT02SIHMDwGCSqGSIb3DQEHATAdBglghkgBZQMEASoEEJbJaiRl
KMnBoD1dkb/FzSWAEBaL8xkFwCu0e1AtDj7nSJc=
-----END CMS-----

此命令获取位于 C:\Users\Test\Documents\PowerShell\Future_Plans.tx 的加密内容。

示例 2:通过管道将加密内容传递到 Unprotect-CmsMessage

$Msg = Get-CmsMessage -Path "C:\Users\Test\Documents\PowerShell\Future_Plans.txt"
$Msg | Unprotect-CmsMessage -To "cn=youralias@emailaddress.com"

Try the new Break All command

此命令通过管道将 Get-CmsMessage cmdlet 的结果从示例 1 传递到 Unprotect-CmsMessage,从而解密该消息并以纯文本格式读取它。 在此例中,To 参数的值是加密证书的主题行的值。 解密后的消息“尝试新的 Break All 命令”是结果。

参数

-Content

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

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

-LiteralPath

指定要获取的加密内容的路径。 与 Path 不同,LiteralPath 的值严格按照所键入的形式使用。 不会将任何字符解释为通配字符。 如果路径包括转义符,请将每个路径括在单引号中。 单引号会告知 PowerShell 不要将括号中的字符解释为转义字符。

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

-Path

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

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