Powershell Netzwerk Anmeldeinformationen mit verschlüsseltem Passwort anlegen

Für bestimmte Powershell Skripte ist es erforderlich dieses mit erhöhten Rechten auszuführen. Um die Anmeldedaten für diesen Account nicht offen ins Skript schreiben zu müssen bietet Powershell die Möglichkeit das Passwort zu verschlüsseln.

 

Zuerst muss das Passwort in der Windows Powershell verschlüsselt werden:

 $pw = ConvertTo-SecureString “password” -AsPlainText –Force

Dann muss das eben erstellte System.Security.SecureString Objekt in Plain Text konvertiert werden:

 $SecureStringAsPlainText = $pw | ConvertFrom-SecureString | Out-File C:\beispiel\securestring.txt

Nun ist das Password als PlainText in der Datei securestring.txt gespeichert.

Beispiel einer solchen securestring.txt:

securestring

Nun kann das Passwort aus der Datei heraus geöffnet werden. Es muss allerdings wieder als Objekt System.Security.SecureString konvertiert werden:

 $SecureString = Get-Content C:\beispiel\securestring.txt | ConvertTo-SecureString

Anschließend wird das Objekt in eine Integer Zahl konvertiert:

$PtrStr = [IntPtr] [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString)

und zum Schluss wird diese Integer Zahl als String konvertiert:

 $UserPW = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($PtrStr)

$UserPW enthält nun das Passwort als String:

befehl1

Hierbei ist zu beachten dass der SecureString auf demselben Computer und mit demselben Nutzer erstellt werden muss, der für die Ausführung des Skriptes genutzt wird.

 

Für die Anmeldeinformationen werden 3 Angaben gebraucht:

$username:  Der Name des Users

$UserPW: Das PW des Users (das vorher verschlüsselte)

$domain: Den Namen der Domäne

Um nun Netzwerk Anmeldeinformationen anzulegen muss ein Objekt vom Typ System.Net.NetworkCredential angelegt werden:

 $creds = New-Object System.Net.NetworkCredential($username,$userpw,$domain) 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.