Wie kann ich unter PowerShell ein Script mit einem anderen Benutzerkonto ausführen?

Manchmal steht man vor der Aufgabe, dass man von einer PowerShell aus ein Script mit anderen Berechtigungen laufen lassen möchte als der Anwender hat in dessen Benutzerkontext das aktuelle PowerShell-Fenster ausgeführt wird. Ein Beispiel ist z.B. der Befehl Get-VM, der ohne Optionen alle virtuellen Maschinen auflistet die auf dem lokalen Rechner laufen. Führt man Get-VM ohne die entsprechenden Berechtigungen aus bekommt man keine Rückgabedaten:

020414_1718_Wiekannichu1

Man muss diesen Befehl mit den richtigen Berechtigungen ausführen. Dazu schreibt man den Befehl zunächst in eine Script-Datei (Get-VM ist natürlich nur ein Beispiel – man kann beliebig komplexe Scripte so ausführen). Um nun in der PowerShell einen anderen Benutzerkontext zu bekommen muss man zunächst mal ein Objekt für das Kennwort erzeugen:

$secpassword = ConvertTo-SecureString "MySecretPassword" -AsPlainText –Force

Dieses Kennwort-Objekt kann man dann dazu verwenden um einen Credential-Objekt zu erzeugen:

$mycreds = New-Object System.Management.Automation.PSCredential ("AdminAccount", $secpassword)

Mit dem Credential-Objekt kann man dann über Start-Process eine neue PowerShell starten in der man dann das Script ausführt. Wichtig ist, dass man den kompletten Pfad des Scriptes übergibt

Start-Process powershell.exe -Credential $mycreds -NoNewWindow -ArgumentList "-noexit -command C:\temp\get-vm.ps1"

In meinem kleinen Beispiel sieht das dann so aus:

020414_1718_Wiekannichu2

Neben dem PowerShell-Fenster im Hintergrund, das den Prozess startet wird das PowerShell-Fenster im Vordergrund gestartet in dem das Script mit erhöhten Rechten ausgeführt wird.

Schreibe einen Kommentar

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

%d Bloggern gefällt das: