Unprotect-CmsMessage (Microsoft.PowerShell.Security)
Unprotect-CmsMessage
- Модуль:
- Microsoft.PowerShell.Security
Расшифровывает содержимое, зашифрованное с использованием формата синтаксиса криптографического сообщения.
Синтаксис
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 в этом примере используется отпечаток сертификата, который использовался для выполнения шифрования. Результатом является расшифрованное сообщение «Попробуйте новую команду «Разорвать все».
$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
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-EventLogRecord
Указывает запись журнала событий, содержащую зашифрованное сообщение CMS.
- Тип :
PSОбъект
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-IncludeContext
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-LiteralPath
Указывает путь к зашифрованному содержимому, которое вы хотите расшифровать. В отличие от Path, значение LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности.
- Тип :
String
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Path
Указывает путь к зашифрованному содержимому, которое вы хотите расшифровать.
- Тип :
String
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-To
Указывает одного или нескольких получателей сообщения CMS, указанных в любом из следующих форматов:
- Фактический сертификат (полученный от поставщика сертификатов).
- Путь к файлу, содержащему сертификат.
- Путь к каталогу, содержащему сертификат.
- Отпечаток сертификата (используется для просмотра в хранилище сертификатов).
- Имя субъекта сертификата (используется для поиска в хранилище сертификатов).
- Тип :
CmsMessageRecipient[]
- Позиция:
1
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Запись журнала событий
Строка
В этот командлет можно передать объект, содержащий зашифрованное содержимое.
Выходы
Строка
Этот командлет возвращает незашифрованное сообщение.