powershellico

Powershell: RunAs Funktionalität

Eine RunAs Funktionalität, bei der man Benutzername und Kennwort in einem Skript mitgeben kann, gibt es von Haus aus nicht in Powershell. Die folgenden Beispielskripte zeigen, wie man ein Programm via Powershell mit einem anderen Benutzer inklusive verschlüsseltem Kennwort ausführen kann.Kennwort verschlüsseln
Das erste Beispielskript zeigt, wie man ein Kennwort verschlüsselt in einer Datei speichert. Dieses verschlüsselte Kennwort kann dann in weiteren Skripten verwendet werden. Das Kennwort wird in der Datei password.bin im Skriptverzeichnis gespeichert.

#Auslesen des Skriptverzeichnis
$global:ScriptDir = Split-Path $MyInvocation.MyCommand.Path –Parent

#Eindeutiger Key
$global:Key = (3,5,2,3,56,34,254,222,1,1,2,23,42,54,99,233,1,34,2,8,6,7,35,17)
#Eingabe des Kennwortes
$passwd = Read-Host "Enter password" -AsSecureString
#Verschlüsseln und speichern in einer Datei
$encpwd = ConvertFrom-SecureString $passwd -key $global:Key
$encpwd > "$($global:ScriptDir)\password.bin"

Wenn man dieses Skript jetzt ausführt, wird man zur Eingabe des Kennwortes aufgefordert.

ps_runas01

Dieses wird dann im Skriptverzeichnis in der password.bin verschlüsselt gespeichert.

ps_runas02

Verschlüsseltes Kennwort für einen Aufruf verwenden
Das folgende Skript ruft die regedit.exe mit dem Benutzer RunAsAdmin auf und verwendet dabei das zuvor verschlüsselte Kennwort.

#Auslesen des Skriptverzeichnis
$global:ScriptDir = Split-Path $MyInvocation.MyCommand.Path –Parent
#Eindeutiger Key
$global:Key = (3,5,2,3,56,34,254,222,1,1,2,23,42,54,99,233,1,34,2,8,6,7,35,17)
#Einlesen des Kennwortes
$encpwd = Get-Content "$($global:ScriptDir)\password.bin"
$passwd = ConvertTo-SecureString $encpwd -key $global:Key
#Erstellen der Benutzername und Kennwortübergabe
$cred = new-object System.Management.Automation.PSCredential 'RunAsAdmin',$passwd
Start-Process c:\windows\regedit.exe -Cred $cred

Hinweis: Der eindeutige Key muss in beiden Skripten gleich sein. Mit diesem Key wird das eigentliche Kennwort verschlüsselt und entschlüsselt.

Um jetzt noch das Skript und somit auch den Eindeutigen Key zu schützen, kann man die Skripte z.B. mit PowerGui kompilieren.
http://en.community.dell.com/techcenter/powergui/

2 Antworten zu “Powershell: RunAs Funktionalität

  1. Michael Mayer

    Hallo

    im ersten Script beim Anlegen des verschlüsselten Passwort gibt es beim Ausführen durch die letzte Zeile “$encpwd > “$($global:ScriptDir)\password.bin” eine Fehlermeldung.

    Ich habe die Zeile umgeschrieben in “out-file $global:ScriptDir\password.bin -InputObject $encpwd”, dann klappt es mit dem Speichern.

    Antworten

Hinterlasse eine Antwort

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