2017-02-22 4 views
-1

Ich versuche, den Betrieb eines Powershell-Skript zusammen mit dem Betrieb von anderen Programmen zu automatisieren.Laufpowershell „IEX“ von C#

den Powershell-Skript manuell ausführen zu können, würde ich normalerweise diese Aufforderung in einem Befehl tun:

powershell "IEX (New-Object Net.WebClient).DownloadString('http://serverurl/Script.ps1'); Invoke-Method" 

ich das nicht # in c scheinen zu replizieren meines Leben mit eingebauten „Powershell“ Befehlen zu speichern. I "d lieber nicht Dinge wie‚Process‘, so würde jede Beratung hilfreich sein

+0

Zeigen Sie uns, was Sie bereits versucht Wenn Sie dies aus C# laufen dann haben Sie bereits einen direkten Zugang zu einem 'System.Net.WebClient' bekam! Objekt, und Sie haben Zugriff auf die '.AddScript()' -Methode für das PowerShell-Objekt, sodass Sie 'iex' nicht benötigen innerhalb des PowerShell runspace .. – briantist

+0

All dies macht gerade [diese C# -Anweisung] (https://msdn.microsoft.com/en-us/library/fhd1f0sw (v = vs.110) .aspx). Dies wird es herunterladen. Verwenden Sie dann 'PowerShellInstance.AddScript()', um es auszuführen. – Icemanind

+0

Ich konnte es mit der markierten Antwort unten arbeiten. Tut mir leid, ich bin nicht großartig mit Fragen und was noch nicht, vor allem Code. – user3394319

Antwort

1

Da System.Net.WebClient ist eine .NET-Klasse, die Sie nicht benötigen Powershell, es zu benutzen.

string script = (new System.Net.WebClient()).DownloadString('http://serverurl/Script.ps1'); 

um das Skript auszuführen, verwenden Sie die System.Management.Automation.PowerShell Klasse:

using System.Management.Automation; 
// ... 

using(PowerShell ps = PowerShell.Create()) 
{ 
    ps.AddScript(script).AddScript("Invoke-Method"); 
    ps.Invoke(); 
} 
+0

Scheint, dass das nicht wie vorgesehen funktioniert. Es besagt, dass die Methode, die ich aufrufen möchte, kein gültiges Cmdlet/etc/etc ist. – user3394319

+0

Was enthält 'Script1.ps1' genau? –

+0

Eine Reihe von Funktionen. Fast wie ein Modul. Wie gesagt, es funktioniert mit IEX-Syntax von der Kommandozeile. – user3394319

Verwandte Themen