Udostępnij za pośrednictwem


ConvertTo-SecureString

Konwertuje zwykły tekst lub zaszyfrowane ciągi na bezpieczne ciągi.

Składnia

ConvertTo-SecureString
              [-String] <String>
              [[-SecureKey] <SecureString>]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-AsPlainText]
              [-Force]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-Key <Byte[]>]
              [<CommonParameters>]

Opis

Polecenie cmdlet ConvertTo-SecureString konwertuje zaszyfrowane ciągi standardowe na bezpieczne ciągi. Może również konwertować zwykły tekst na bezpieczne ciągi. Jest używany z ConvertFrom-SecureString i Read-Host. Bezpieczny ciąg utworzony za pomocą polecenia cmdlet może być używany z poleceniami cmdlet lub funkcjami, które wymagają parametru typu SecureString. Bezpieczny ciąg można przekonwertować z powrotem na zaszyfrowany, standardowy ciąg przy użyciu polecenia cmdlet ConvertFrom-SecureString. Dzięki temu można przechowywać go w pliku do późniejszego użycia.

Jeśli przekonwertowany ciąg standardowy został zaszyfrowany przy użyciu ConvertFrom-SecureString z określonym kluczem, ten sam klucz musi być podany jako wartość parametru Key lub SecureKey polecenia cmdlet ConvertTo-SecureString.

Uwaga

Aby uzyskać więcej informacji na temat ochrony danych SecureString, zobacz Jak bezpieczny jest protokół SecureString?.

Przykłady

Przykład 1. Konwertowanie bezpiecznego ciągu na zaszyfrowany ciąg

W tym przykładzie pokazano, jak utworzyć bezpieczny ciąg z danych wejściowych użytkownika, przekonwertować bezpieczny ciąg na zaszyfrowany ciąg standardowy, a następnie przekonwertować zaszyfrowany ciąg standardowy z powrotem na bezpieczny ciąg.

PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Secure
System.Security.SecureString
PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure
PS C:\> $Encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae98000000000
02000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7efa79820000000004800000a000
000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d1400
0000e6b7bf46a9d485ff211b9b2a2df3bd6eb67aae41
PS C:\> $Secure2 = ConvertTo-SecureString -String $Encrypted
PS C:\> $Secure2
System.Security.SecureString

Pierwsze polecenie używa parametru AsSecureString polecenia cmdlet Read-Host w celu utworzenia bezpiecznego ciągu. Po wprowadzeniu polecenia wszystkie wpisane znaki są konwertowane na bezpieczny ciąg, a następnie zapisywane w zmiennej $Secure.

Drugie polecenie wyświetla zawartość zmiennej $Secure. Ponieważ zmienna $Secure zawiera bezpieczny ciąg, program PowerShell wyświetla tylko typ System.Security.SecureString.

Trzecie polecenie używa polecenia cmdlet ConvertFrom-SecureString, aby przekonwertować bezpieczny ciąg w zmiennej $Secure na zaszyfrowany ciąg standardowy. Zapisuje wynik w zmiennej $Encrypted.

Czwarte polecenie wyświetla zaszyfrowany ciąg w wartości zmiennej $Encrypted.

Piąte polecenie używa polecenia cmdlet ConvertTo-SecureString, aby przekonwertować zaszyfrowany ciąg standardowy w zmiennej $Encrypted z powrotem na bezpieczny ciąg. Zapisuje wynik w zmiennej $Secure2. Szóste polecenie wyświetla wartość zmiennej $Secure2. Typ SecureString wskazuje, że polecenie zakończyło się pomyślnie.

Przykład 2. Tworzenie bezpiecznego ciągu z zaszyfrowanego ciągu w pliku

W tym przykładzie pokazano, jak utworzyć bezpieczny ciąg na podstawie zaszyfrowanego standardowego ciągu zapisanego w pliku.

$Secure = Read-Host -AsSecureString
$Encrypted = ConvertFrom-SecureString -SecureString $Secure -Key (1..16)
$Encrypted | Set-Content Encrypted.txt
$Secure2 = Get-Content Encrypted.txt | ConvertTo-SecureString -Key (1..16)

Pierwsze polecenie używa parametru AsSecureString polecenia cmdlet Read-Host w celu utworzenia bezpiecznego ciągu. Po wprowadzeniu polecenia wszystkie wpisane znaki są konwertowane na bezpieczny ciąg, a następnie zapisywane w zmiennej $Secure.

Drugie polecenie używa polecenia cmdlet ConvertFrom-SecureString, aby przekonwertować bezpieczny ciąg w zmiennej $Secure na zaszyfrowany ciąg standardowy przy użyciu określonego klucza. Zawartość jest zapisywana w zmiennej $Encrypted.

Trzecie polecenie używa operatora potoku (|) do wysyłania wartości zmiennej $Encrypted do polecenia cmdlet Set-Content, które zapisuje wartość w pliku Encrypted.txt.

Czwarte polecenie używa polecenia cmdlet Get-Content do pobrania zaszyfrowanego standardowego ciągu w pliku Encrypted.txt. Polecenie używa operatora potoku do wysyłania zaszyfrowanego ciągu do polecenia cmdlet ConvertTo-SecureString, które konwertuje go na bezpieczny ciąg przy użyciu określonego klucza. Wyniki są zapisywane w zmiennej $Secure2.

Przykład 3. Konwertowanie ciągu zwykłego tekstu na bezpieczny ciąg

To polecenie konwertuje ciąg zwykły tekst P@ssW0rD! na bezpieczny ciąg i przechowuje wynik w zmiennej $Secure_String_Pwd.

Począwszy od programu PowerShell 7, parametr Force nie jest wymagany w przypadku używania parametru AsPlainText. Jednak uwzględnienie parametru Force gwarantuje, że instrukcja jest zgodna z wcześniejszymi wersjami.

$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

Ostrożność

Należy unikać używania ciągów zwykłego tekstu w skryscie lub w wierszu polecenia. Zwykły tekst może być wyświetlany w dziennikach zdarzeń i dziennikach historii poleceń.

Parametry

-AsPlainText

Określa ciąg zwykłego tekstu, który ma być konwertowany na bezpieczny ciąg. Polecenia cmdlet dla ciągów znaków chronionych pomagają chronić poufny tekst. Tekst jest szyfrowany pod kątem prywatności i jest usuwany z pamięci komputera po jego użyciu. Jeśli używasz tego parametru do podawania zwykłego tekstu jako danych wejściowych, system nie może chronić tych danych wejściowych w ten sposób.

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

-Force

Począwszy od programu PowerShell 7, parametr Force nie jest już wymagany w przypadku używania parametru AsPlainText. Chociaż parametr nie jest używany, nie został usunięty w celu zapewnienia zgodności z wcześniejszymi wersjami programu PowerShell.

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

-Key

Określa klucz szyfrowania używany do konwertowania oryginalnego bezpiecznego ciągu na zaszyfrowany ciąg standardowy. Prawidłowe długości klucza to 16, 24 i 32 bajty.

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

-SecureKey

Określa klucz szyfrowania używany do konwertowania oryginalnego bezpiecznego ciągu na zaszyfrowany ciąg standardowy. Klucz musi być podany w formacie bezpiecznego ciągu. Bezpieczny ciąg zostanie przekonwertowany na tablicę bajtów, która będzie używana jako klucz. Prawidłowe bezpieczne długości kluczy to 8, 12 i 16 punktów kodu.

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

-String

Określa ciąg, który ma być konwertowany na bezpieczny ciąg.

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

Dane wejściowe

String

Do tego polecenia cmdlet można przekazać standardowy zaszyfrowany ciąg.

Dane wyjściowe

SecureString

To polecenie cmdlet zwraca utworzony obiekt SecureString.

Uwagi

Niektóre znaki, takie jak emotikony, odpowiadają kilku punktom kodu w ciągu zawierającym je. Unikaj używania tych znaków, ponieważ mogą powodować problemy i nieporozumienia, gdy są używane w haśle.