2012-04-11 11 views
0

Ich möchte eine neue PowerShell-Instanz aus meinem Skript mit verschiedenen Benutzeranmeldeinformationen erstellen. Meine Idee ist, in diesem Skript Teil einige Admin-Sachen mit unterschiedlichen Anmeldeinformationen zu machen. Ich möchte den Hauptteil mit normalen Benutzerrechten ausführen.PowerShell - Erstellen einer neuen Instanz mit unterschiedlichen Anmeldeinformationen

Idee, aber nicht funktioniert:

$script= {$InScript = Get-Process} 

$pp= get-credential 

[System.Diagnostics.Process]::Start("c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0]) 

[System.Diagnostics.Process]::Start("c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0]) 


$InScript 

Ausnahme bei beiden Leitungen mit Startbefehle:

Exception "Start" mit "5" Argument Aufruf (e): „Der Verzeichnisname ist ungültig "

Wenn ich das Skript mit Administratorrechten ausführe, funktioniert es perfekt.

Antwort

1

Sie können .net verwenden:

Dieser Konstruktor ::Start Methode ist:

::Start(string fileName, string arguments, string userName, System.Security.SecureString password, string domain) 

bearbeiten Nach dem Kommentar:

setzen versuchen vollständigen Pfad zur exe:

[System.Diagnostics.Process]::Start("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", "-command $script", $pp.UserName.Split('\')[1] , $pp.Password , $pp.UserName.Split('\')[0]) 

oder Start-Prozess verwenden:

start-process -FilePath "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Credential $pp -ArgumentList $script 
+0

Vielen Dank für Ihren Kommentar! Aber ich bekomme eine Ausnahme. Ausnahme beim Aufruf von "Start" mit "5" Argument (en): "Der Verzeichnisname ist ungültig" Bei Zeile: 2 Zeichen: 36 – LaPhi

+0

Geben Sie die Zeile mit dem Fehler ein. Es scheint ein Fehler im Pfad der ausführbaren Datei zu sein. –

+0

PS C: \ Windows \ System32 \ WindowsPowerShell \ v1.0> [System.Diagnostics.Process] :: Starten Sie ("powershell.exe", "-command $ script " , $ pp.UserName.Split ('\') [1], $ pp.Password, $ pp.UserName.Split ('\') [0]) Ausnahme, die" Start "mit" 5 "-Argument aufruft (s): "Der Verzeichnisname ist ungültig" Bei Zeile: 1 Zeichen: 36 + [System.Diagnostics.Process] :: Start <<<< ("powershell.exe", "-command $ script", $ pp .UserName.Split ('\') [1], $ pp.Pas Schwert, $ pp.UserName.Split ('\') [0]) + KategorieInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: DotNetMethodException – LaPhi