Udostępnij za pośrednictwem


Unprotect-CmsMessage

Odszyfrowuje zawartość, która została zaszyfrowana przy użyciu formatu składni komunikatów kryptograficznych.

Składnia

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

Opis

Polecenie Unprotect-CmsMessage cmdlet odszyfrowuje zawartość zaszyfrowaną przy użyciu formatu składni komunikatów kryptograficznych (CMS).

Polecenia cmdlet cmS obsługują szyfrowanie i odszyfrowywanie zawartości przy użyciu standardowego formatu IETF do kryptograficznego ochrony komunikatów, zgodnie z opisem RFC5652.

Standard szyfrowania CMS używa kryptografii klucza publicznego, gdzie klucze używane do szyfrowania zawartości (klucza publicznego) i kluczy używanych do odszyfrowywania zawartości (klucza prywatnego) są oddzielne. Klucz publiczny można szeroko udostępniać i nie jest poufnymi danymi. Jeśli jakakolwiek zawartość jest zaszyfrowana przy użyciu tego klucza publicznego, tylko twój klucz prywatny może go odszyfrować. Aby uzyskać więcej informacji, zobacz Kryptografia klucza publicznego.

Unprotect-CmsMessage odszyfrowuje zawartość zaszyfrowaną w formacie CMS. To polecenie cmdlet można uruchomić, aby odszyfrować zaszyfrowaną zawartość, uruchamiając Protect-CmsMessage polecenie cmdlet . Możesz określić zawartość, którą chcesz odszyfrować jako ciąg, według numeru identyfikatora rekordu dziennika zdarzeń szyfrowania lub ścieżki do zaszyfrowanej zawartości. Polecenie Unprotect-CmsMessage cmdlet zwraca odszyfrowaną zawartość.

Dodano obsługę systemów Linux i macOS w programie PowerShell 7.1.

Przykłady

Przykład 1. Odszyfrowywanie wiadomości

W poniższym przykładzie odszyfrujesz zawartość znajdującą się w ścieżce C:\Users\Test\Documents\PowerShellliterału . Dla wartości wymaganego parametru To w tym przykładzie użyto odcisku palca certyfikatu, który został użyty do wykonania szyfrowania. Odszyfrowany komunikat "Wypróbuj nowe polecenie Break All" jest wynikiem.

$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

Przykład 2. Odszyfrowywanie zaszyfrowanego komunikatu dziennika zdarzeń

Poniższy przykład pobiera zaszyfrowane zdarzenie z dziennika zdarzeń programu PowerShell i odszyfrowuje je przy użyciu polecenia Unprotect-CmsMessage.

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

Przykład 3. Odszyfrowywanie zaszyfrowanych komunikatów dziennika zdarzeń przy użyciu potoku

Poniższy przykład pobiera wszystkie zaszyfrowane zdarzenia z dziennika zdarzeń programu PowerShell i odszyfrowuje je przy użyciu polecenia Unprotect-CmsMessage.

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

Parametry

-Content

Określa zaszyfrowany ciąg lub zmienną zawierającą zaszyfrowany ciąg.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-EventLogRecord

Określa rekord dziennika zdarzeń, który zawiera zaszyfrowany komunikat CMS.

Typ:PSObject
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-IncludeContext

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-LiteralPath

Określa ścieżkę do zaszyfrowanej zawartości, którą chcesz odszyfrować. W przeciwieństwie do ścieżki, wartość literałuPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Path

Określa ścieżkę do zaszyfrowanej zawartości, którą chcesz odszyfrować.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-To

Określa co najmniej jednego adresata komunikatu CMS zidentyfikowanego w dowolnym z następujących formatów:

  • Rzeczywisty certyfikat (pobrany z dostawcy certyfikatów).
  • Ścieżka do pliku zawierającego certyfikat.
  • Ścieżka do katalogu zawierającego certyfikat.
  • Odcisk palca certyfikatu (używany do wyszukiwania w magazynie certyfikatów).
  • Nazwa podmiotu certyfikatu (używana do wyszukiwania w magazynie certyfikatów).
Typ:CmsMessageRecipient[]
Position:1
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

EventLogRecord

String

Do tego polecenia cmdlet można przekazać potok obiektu zawierającego zaszyfrowaną zawartość.

Dane wyjściowe

String

To polecenie cmdlet zwraca niezaszyfrowany komunikat.