Verschlüsselte Skripte in der PowerShell nutzen und auch andere Dateien verschlüsseln PowerShell-Skripte im Datencenter verschlüsseln und Zugriffe sichern: Teil 2

Autor / Redakteur: Thomas Joos / Thomas Joos

Im ersten Teil unserer Tippreihe zur Verschlüsselung von Daten und Skripten in der PowerShell haben wir bereits gezeigt, wie sich Skripte und deren Inhalt verschlüsseln lassen. Die Vorgehensweise im letzten Tipp können Sie auch für andere Dateien nutzen.

Anbieter zum Thema

Netzwerke lassen sich auch mit der PowerShell umfassend verwalten.
Netzwerke lassen sich auch mit der PowerShell umfassend verwalten.
(Netzwerke lassen sich auch mit der PowerShell umfassend verwalten.)

Der erste Teil unserer Tippreihe zur Verschlüsselung von Skripten und Dateien in der PowerShell beschreibt, wie sich mit wenigen Befehlen der Inhalt von Dateien verschlüsseln lässt. Das kann natürlich auch für Skripte, aber auch für andere Dateien genutzt werden. In diesem Tipp zeigen wir, wie sich der verschlüsselte Inhalt von Dateien nutzen lässt.

Verschlüsselter Inhalt von Skripten auslesen

Während wir uns im ersten Teil der Tippreihe zur Verschlüsselung von Dateien mit dem Verschlüsseln von Skripten und Dateien befasst haben, gehen wir in diesem Beitrag darauf ein, wie sich der verschlüsselte Inhalt nutzen lässt.

Der Inhalt einer verschlüsselten Datei sollte dazu zunächst in einer Variablen gespeichert werden. Der Inhalt der Datei "C:\temp\encryptsecurescript.ps1" lässt sich mit dem folgenden Befehl anzeigen:

type C:\temp\encryptsecurescript.ps1

Dieser Inhalt lässt sich wiederum in einer Variablen speichern, zum Beispiel mit:

$code = "01000000d08c9ddf0115d1118c7a00c04fc297eb01000000dab508f211058e4da4bab4c6005bd92600000000020000000000106600000001000020000000d05cc0244977fd3f4e02d0c295b0a31dfd2eda4f114b562cd2061a2f67f67aab000000000e80000000020000200000002f9858e60cf58971367b31988ebbb7f85fefebb790d2666db61b168c771721f080000000cc291e5f5f05cdf8efd421bc5b7b2ebd9bb751b224993c66cfdf227daebc0c2799bed87732a2e7864ff2dbf305ca94a439fa8b578e4148893e10a3cd54905babdd2add1a4f2fa626a4eee1a3ed65aa386154b359a959cc81cdfd58abff18b0c73b2e9877be5e578b9c1efc4cbb87597db10243b5c26b7d4537f0d2df34ced74b40000000be90379aac1e4a74904cd5858c7d77a53fe1d909b6c0b17f61474d5991be13c881381c0b3b82e85b5d2a6d3e948fd19c77fb277e50f2ff878eb756e7ae5a7bcd"

Im Anschluss lässt sich der Inhalt in einer weiteren Variablen speichern, in welcher der Code als Secure-String konvertiert wird, ähnlich wie beim Einsatz von Kennwörtern.  Dieser Inhalt lässt sich in einer weiteren Variablen speichern:

$TextSource = $Code

ConvertTo-SecureString

Danach kann der Code entschlüsselt werden. Dazu kommen Funktionen aus .NET zum Einsatz, die Microsoft in der Dokumentation ausführlich aufzeigt

$TextDest = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($TextSource))

Zeigen Sie den Inhalt der Variablen $TextDest an, erkennen sie, dass es sich um den ursprünglichen, unverschlüsselten Inhalt des Skriptes handelt. Dieser kann wiederum mit dem Cmdlet Invoke-Expression ausführen lassen, zum Beispiel mit:

Invoke-Expression $TextDest