Unprotect-CmsMessage

Расшифровывает содержимое, зашифрованное с помощью формата синтаксиса криптографического сообщения.

Синтаксис

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

Описание

Командлет Unprotect-CmsMessage расшифровывает содержимое, зашифрованное с помощью формата синтаксиса криптографических сообщений (CMS).

Командлеты CMS поддерживают шифрование и расшифровку содержимого с помощью стандартного формата IETF для шифрования сообщений, как описано RFC5652.

Стандарт шифрования CMS использует криптографию открытого ключа, где ключи, используемые для шифрования содержимого (открытый ключ), и ключи, используемые для расшифровки содержимого (закрытый ключ), разделены. Открытый ключ можно совместно использовать и не учитывает конфиденциальные данные. Если какое-либо содержимое зашифровано с помощью данного открытого ключа, расшифровать его позволяет только имеющийся у вас закрытый ключ. Дополнительные сведения см. на странице о шифровании с открытым ключом.

Unprotect-CmsMessage расшифровывает содержимое, зашифрованное в формате CMS. Этот командлет можно запустить для расшифровки содержимого, зашифрованного с помощью командлета Protect-CmsMessage . Можно указать содержимое, которое требуется расшифровать как строку, по идентификатору записи журнала шифрования или по пути к зашифрованном содержимому. Командлет Unprotect-CmsMessage возвращает расшифрованное содержимое.

Добавлена поддержка Linux и macOS в PowerShell 7.1.

Примеры

Пример 1. Расшифровка сообщения

В следующем примере вы расшифровываете содержимое, расположенное по литералу пути C:\Users\Test\Documents\PowerShell. Для значения требуемого параметра To в этом примере используется отпечаток сертификата, который использовался для выполнения шифрования. Расшифрованное сообщение "Попробуйте новую команду Break All", является результатом.

$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 используется точно так же, как он типизированный. Никакие символы не распознаются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.

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

Объект, содержащий зашифрованное содержимое, можно передать этому командлету.

Выходные данные

String

Этот командлет возвращает незашифрованное сообщение.