ConvertTo-SecureString
Konvertiert Nur-Text- oder verschlüsselte Zeichenfolgen in sichere Zeichenfolgen.
Syntax
ConvertTo-SecureString
[-String] <String>
[[-SecureKey] <SecureString>]
[<CommonParameters>]
ConvertTo-SecureString
[-String] <String>
[-AsPlainText]
[-Force]
[<CommonParameters>]
ConvertTo-SecureString
[-String] <String>
[-Key <Byte[]>]
[<CommonParameters>]
Beschreibung
Das Cmdlet ConvertTo-SecureString
konvertiert verschlüsselte Standardzeichenfolgen in sichere Zeichenfolgen. Es kann auch einfachen Text in sichere Zeichenfolgen konvertieren. Es wird zusammen mit ConvertFrom-SecureString
und Read-Host
verwendet. Die vom Cmdlet erstellte sichere Zeichenfolge kann mit Cmdlets oder Funktionen verwendet werden, die einen Parameter vom Typ SecureString erfordern. Die sichere Zeichenfolge kann mit dem Cmdlet ConvertFrom-SecureString
zurück in eine verschlüsselte Standardzeichenfolge konvertiert werden. So kann sie für die spätere Verwendung in einer Datei gespeichert werden.
Wenn die zu konvertierende Standardzeichenfolge mit ConvertFrom-SecureString
mithilfe eines angegebenen Schlüssels verschlüsselt wurde, muss der gleiche Schlüssel als Wert des Parameters Key oder SecureKey an das Cmdlet ConvertTo-SecureString
übergeben werden.
Hinweis
Beachten Sie, dass der Inhalt einer SecureString laut DotNet auf Nicht-Windows-Systemen nicht verschlüsselt ist.
Beispiele
Beispiel 1: Konvertieren einer sicheren Zeichenfolge in eine verschlüsselte Zeichenfolge
In diesem Beispiel wird veranschaulicht, wie eine sichere Zeichenfolge aus der Benutzereingabe erstellt, die sichere Zeichenfolge in eine verschlüsselte Standardzeichenfolge konvertiert und dann die verschlüsselte Standardzeichenfolge wieder in eine sichere Zeichenfolge konvertiert wird.
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
Der erste Befehl erstellt mit dem Parameter AsSecureString des Cmdlets Read-Host
eine sichere Zeichenfolge. Nach der Eingabe des Befehls werden alle von Ihnen eingegebenen Zeichen in eine sichere Zeichenfolge konvertiert und anschließend in der Variablen $Secure
gespeichert.
Der zweite Befehl zeigt den Inhalt der Variablen $Secure
an. Da die Variable $Secure
eine sichere Zeichenfolge enthält, zeigt PowerShell nur den Typ System.Security.SecureString an.
Der dritte Befehl konvertiert mit dem Cmdlet ConvertFrom-SecureString
die sichere Zeichenfolge in der Variablen $Secure
in eine verschlüsselte Standardzeichenfolge. Das Ergebnis wird in der Variablen $Encrypted
gespeichert.
Der vierte Befehl zeigt die verschlüsselte Zeichenfolge im Wert der Variablen $Encrypted
an.
Der fünfte Befehl konvertiert mit dem Cmdlet ConvertTo-SecureString
die verschlüsselte Standardzeichenfolge in der Variablen $Encrypted
zurück in eine sichere Zeichenfolge. Das Ergebnis wird in der Variablen $Secure2
gespeichert.
Der sechste Befehl zeigt den Wert der Variablen $Secure2
an. Der SecureString-Typ gibt an, dass der Befehl erfolgreich ausgeführt wurde.
Beispiel 2: Erstellen einer sicheren Zeichenfolge aus einer verschlüsselten Zeichenfolge in einer Datei
Dieses Beispiel zeigt, wie eine sichere Zeichenfolge aus einer verschlüsselten, in einer Datei gespeicherten Standardzeichenfolge erstellt wird.
$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)
Der erste Befehl erstellt mit dem Parameter AsSecureString des Cmdlets Read-Host
eine sichere Zeichenfolge. Nach der Eingabe des Befehls werden alle von Ihnen eingegebenen Zeichen in eine sichere Zeichenfolge konvertiert und anschließend in der Variablen $Secure
gespeichert.
Der zweite Befehl konvertiert mit dem Cmdlet ConvertFrom-SecureString
die sichere Zeichenfolge in der Variablen $Secure
anhand des angegebenen Schlüssels in eine verschlüsselte Standardzeichenfolge. Der Inhalt wird in der Variablen $Encrypted
gespeichert.
Der dritte Befehl sendet mithilfe eines Pipelineoperators (|
) den Wert der Variablen $Encrypted
an das Cmdlet Set-Content
, das den Wert in der Datei „Encrypted.txt“ speichert.
Der vierte Befehl ruft mit dem Cmdlet Get-Content
die verschlüsselte Standardzeichenfolge in der Datei „Encrypted.txt“ ab. Der Befehl sendet mithilfe eines Pipelineoperators die verschlüsselte Zeichenfolge an das Cmdlet ConvertTo-SecureString
, das sie mit dem angegebenen Schlüssel in eine sichere Zeichenfolge konvertiert.
Die Ergebnisse werden in der Variablen $Secure2
gespeichert.
Beispiel 3: Konvertieren einer Nur-Text-Zeichenfolge in eine sichere Zeichenfolge
Mit diesem Befehl wird die Nur-Text-Zeichenfolge P@ssW0rD!
in eine sichere Zeichenfolge konvertiert und das Ergebnis in der Variablen $Secure_String_Pwd
gespeichert.
Ab PowerShell 7 ist der Parameter Force bei Verwendung des Parameters AsPlainText nicht erforderlich. Durch das Einbeziehen des Parameters Force wird jedoch sichergestellt, dass die Anweisung mit früheren Versionen kompatibel ist.
$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force
Achtung
Vermeiden Sie die Verwendung von Nur-Text-Zeichenfolgen im Skript oder an der Befehlszeile. Reiner Text kann in Ereignisprotokollen und in Befehlsverlaufsprotokollen auftauchen.
Parameter
-AsPlainText
Gibt eine Nur-Text-Zeichenfolge an, die in eine sichere Zeichenfolge konvertiert werden soll. Cmdlets für sichere Zeichenfolgen tragen zum Schutz von vertraulichem Text bei. Der Text wird zu Datenschutzzwecken verschlüsselt und nach der Verwendung aus dem Computerspeicher gelöscht. Wenn Sie diesen Parameter für einfachen Text als Eingabe verwenden, kann nicht das System die Eingabe nicht auf diese Weise schützen.
Typ: | SwitchParameter |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Force
Ab PowerShell 7 ist der Parameter Force bei Verwendung des Parameters AsPlainText nicht mehr erforderlich. Zwar wird der Parameter nicht verwendet, er wurde aber nicht entfernt, um so die Kompatibilität mit früheren Versionen von PowerShell zu gewährleisten.
Typ: | SwitchParameter |
Position: | 2 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Key
Gibt den Schlüssel an, mit dem die ursprüngliche sichere Zeichenfolge in eine verschlüsselte Standardzeichenfolge konvertiert wird. Gültige Schlüssellängen sind 16, 24 und 32 Byte.
Typ: | Byte[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SecureKey
Gibt den Schlüssel an, mit dem die ursprüngliche sichere Zeichenfolge in eine verschlüsselte Standardzeichenfolge konvertiert wird. Der Schlüssel muss im Format einer sicheren Zeichenfolge bereitgestellt werden. Die sichere Zeichenfolge wird in ein Bytearray konvertiert, das als Schlüssel verwendet werden soll. Gültige Längen für sichere Schlüssel sind 8, 12 und 16 Codepunkte.
Typ: | SecureString |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-String
Gibt die Zeichenfolge an, die in eine sichere Zeichenfolge konvertiert werden soll.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können eine verschlüsselte Standardzeichenfolge an dieses Cmdlet weiterreichen.
Ausgaben
Dieses Cmdlet gibt das erstellte SecureString-Objekt zurück.
Hinweise
Einige Zeichen, wie etwa Emoticons, entsprechen mehreren Codepunkten in der Zeichenfolge, die sie enthält. Vermeiden Sie diese Zeichen, da sie bei der Nutzung in einem Kennwort Probleme und Missverständnisse verursachen können.