Wie man einen sicheren String in Klartext in PowerShell konvertiert
-
Verwenden Sie die
Marshal
-Klasse, um ein sicheres String in Klartext in PowerShell zu konvertieren -
Verwenden Sie das
ConvertFrom-SecureString
-Cmdlet, um ein sicheres String in Klartext in PowerShell zu konvertieren -
Verwenden Sie die
NetworkCredential
-Klasse, um ein sicheres String in Klartext in PowerShell zu konvertieren -
Verwenden Sie die Methode
GetNetworkCredential
, um ein sicheres String in Klartext in PowerShell zu konvertieren - Fazit

PowerShell bietet verschiedene Methoden zur Handhabung von SecureString
-Objekten, die dazu entwickelt wurden, sensible Informationen im Speicher zu schützen. Es gibt jedoch Szenarien, in denen es notwendig wird, SecureString
in Klartext umzuwandeln, trotz der Sicherheitsrisiken.
In diesem Artikel erkunden wir verschiedene Methoden, um diese Konversion zu erreichen, einschließlich der Verwendung der Marshal
-Klasse, des ConvertFrom-SecureString
-Cmdlets, der NetworkCredential
-Klasse und der GetNetworkCredential()
-Methode. Jede Methode bietet ihre eigenen Vorteile und Überlegungen, die Flexibilität beim sicheren Umgang mit sensiblen Daten innerhalb von PowerShell-Skripten ermöglichen.
Verwenden Sie die Marshal
-Klasse, um ein sicheres String in Klartext in PowerShell zu konvertieren
In PowerShell bietet die [System.Runtime.InteropServices.Marshal]
-Klasse Methoden, um die Interoperabilität mit unmanaged Code zu erleichtern und mit Speicher zu manipulieren. Zwei ihrer Methoden, SecureStringToBSTR
und PtrToStringAuto()
, spielen eine entscheidende Rolle bei der Umwandlung von SecureString
in Klartext.
Beispiel:
powershellCopy$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$secureStringPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
$plainText = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($secureStringPtr)
$plainText
In diesem Beispiel erstellen wir zunächst ein SecureString
-Objekt mit dem Namen $secureString
, das das Passwort "MyPassword"
enthält, indem wir das ConvertTo-SecureString
-Cmdlet verwenden. Dann verwenden wir [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureString)
, um den SecureString
in eine BSTR (Basic String)-Darstellung umzuwandeln.
Schließlich wird [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($secureStringPtr)
verwendet, um die BSTR-Darstellung in Klartext umzuwandeln und in der Variablen $plainText
zu speichern.
Ausgabe:
Verwenden Sie das ConvertFrom-SecureString
-Cmdlet, um ein sicheres String in Klartext in PowerShell zu konvertieren
Das ConvertFrom-SecureString
-Cmdlet konvertiert den sicheren String in einen verschlüsselten Standard-String. Ab PowerShell 7.0 wurde ein neuer Parameter -AsPlainText
hinzugefügt, der einen sicheren String in einen klaren Textstring umwandelt.
Das folgende Beispiel erfordert PowerShell Version 7.0 oder höher.
Beispiel:
powershellCopy$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$plainText = ConvertFrom-SecureString -SecureString $secureString -AsPlainText
$plainText
In diesem Beispiel beginnen wir mit der Erstellung eines SecureString
-Objekts mit dem Namen $secureString
, das das Passwort "MyPassword"
enthält, indem wir das ConvertTo-SecureString
-Cmdlet verwenden. Anschließend verwenden wir das ConvertFrom-SecureString
-Cmdlet, um $secureString
in seine Klartextdarstellung zu konvertieren, und speichern das Ergebnis in der Variablen $plainText
.
Ausgabe:
Verwenden Sie die NetworkCredential
-Klasse, um ein sicheres String in Klartext in PowerShell zu konvertieren
In PowerShell ist die [System.Net.NetworkCredential]
-Klasse Teil des System.Net
-Namensraums des .NET Frameworks. Sie wird hauptsächlich zur Bereitstellung von Anmeldeinformationen für Netzwerkoperationen verwendet, wie zum Beispiel beim Zugriff auf Webdienste, FTP-Server oder Netzwerkfreigaben.
Während ihr Hauptzweck die Authentifizierung ist, kann sie auch verwendet werden, um einen SecureString
in Klartext
in Szenarien umzuwandeln, in denen Klartext
-Anmeldeinformationen erforderlich sind.
Beispiel:
powershellCopy$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$networkCredential = New-Object System.Net.NetworkCredential("", $secureString)
$plainText = $networkCredential.Password
$plainText
In diesem Beispiel erstellen wir ein SecureString
-Objekt mit dem Namen $secureString
, das das Passwort "MyPassword"
enthält, indem wir das ConvertTo-SecureString
-Cmdlet verwenden. Dann instanziieren wir ein System.Net.NetworkCredential
-Objekt, $networkCredential
, indem wir einen leeren Benutzernamen angeben (da dieser für unseren Zweck nicht erforderlich ist) und den SecureString
mit dem Passwort als Parameter.
Schließlich rufen wir das Klartext
-Passwort von $networkCredential.Password
ab und speichern es in $plainText
.
Ausgabe:
Verwenden Sie die Methode GetNetworkCredential
, um ein sicheres String in Klartext in PowerShell zu konvertieren
In PowerShell ist die Methode GetNetworkCredential()
Teil der PSCredential
-Klasse, die verwendet wird, um eine Reihe von Benutzeranmeldeinformationen darzustellen. Diese Methode wird hauptsächlich verwendet, um die Klartext
-Darstellung des Passworts, das in einem PSCredential
-Objekt gespeichert ist, zu extrahieren.
Beispiel:
powershellCopy$secureString = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential("username", $secureString)
$plainText = $credential.GetNetworkCredential().Password
$plainText
In diesem Beispiel beginnen wir mit der Erstellung eines SecureString
-Objekts mit dem Namen $secureString
, das das Passwort "MyPassword"
enthält, indem wir das ConvertTo-SecureString
-Cmdlet verwenden. Als nächstes erstellen wir ein PSCredential
-Objekt mit dem Namen $credential
mit einem Dummy-Benutzernamen und dem $secureString
als Passwort.
Schließlich verwenden wir die Methode $credential.GetNetworkCredential().Password
, um das Klartext
-Passwort aus dem PSCredential
-Objekt zu extrahieren.
Ausgabe:
Fazit
In PowerShell-Skripten ist die Umwandlung von SecureString
in Klartext ein häufiges Anliegen in verschiedenen Szenarien. Durch die Nutzung von Methoden wie der [System.Runtime.InteropServices.Marshal]
-Klasse, dem ConvertFrom-SecureString
-Cmdlet, der [System.Net.NetworkCredential]
-Klasse oder der GetNetworkCredential()
-Methode können Benutzer sensible Informationen sicher handhaben und gleichzeitig operationale Anforderungen berücksichtigen.
Egal, ob es um die Interaktion mit externen Systemen, Legacy-APIs oder Netzwerkoperationen geht, diese Methoden bieten Flexibilität und Bequemlichkeit. Es ist jedoch von entscheidender Bedeutung, sensible Daten sorgfältig zu behandeln und die damit verbundenen Sicherheitsimplikationen zu berücksichtigen.
Verwandter Artikel - PowerShell String
- Wie man die Position von Teilzeichenfolgen in PowerShell findet
- Wie man einen Text in einer Datei mit PowerShell ersetzt
- Überprüfen Sie, ob eine Zeichenfolge in PowerShell leer ist
- Wie man überprüft, ob eine Zeichenfolge NICHT NULL oder LEER in PowerShell ist
- Auswählen mehrerer Muster in einer Zeichenfolge mithilfe von PowerShell
- Ersetzen von Zeichenfolgen in PowerShell