2017-01-23 17 views
0

Ich versuche, eine .Net-Formularanwendung zu entwickeln, um azure-VMs in C# mithilfe von Powershell-Cmdlets zu verwalten. Ich muss das Azure-Modul verwenden, um dies zum Laufen zu bringen.Verwenden von C# zum Ausführen des Powershell-Befehls (azureVM)

One des Cmdlets werden Add-AzureAccount

Meine Frage ist, wie kann ich dieses Modul (Azure) in C# Projekt enthalten?

+5

Sie müssen ein PS-Skript erstellen und es aus C# aufrufen. Siehe https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/ –

+0

Haben Sie ein Update zu diesem Thema? –

+0

Ich habe gerade den answert @ TomSun-MSFT gepostet –

Antwort

1

Im Kommentarabschnitt gab @Prageeth Saravanan einen nützlichen Link zur Integration von PowerShell in C#.

https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/

Schnell Beispiel:

Zuerst hatte ich diesen Refs enthalten:

System.Management.Automation 
System.Collections.ObjectModel 

Hinweis: Sie benötigen ein NuGet Paket für "Management.Automation" hinzufügen . Geben Sie "System.Management.Automation" ein und Sie werden es finden.

C# -Code:

//The first step is to create a new instance of the PowerShell class 
using (PowerShell powerInstance = PowerShell.Create()) //PowerShell.Create() creates an empty PowerShell pipeline for us to use for execution. 
       { 
       // use "AddScript" to add the contents of a script file to the end of the execution pipeline. 
       // use "AddCommand" to add individual commands/cmdlets to the end of the execution pipeline. 

        PowerShellInstance.AddScript("param($param1) $d = get-date; $s = 'test string value'; $d; $s; $param1; get-service"); 

        // use "AddParameter" to add a single parameter to the last command/script on the pipeline. 
        PowerShellInstance.AddParameter("param1", "parameter 1 value!"); 

        //Result of the script with Invoke() 
        Collection<PSObject> result = powerInstance.Invoke(); 

        //output example : @{yourProperty=value; yourProperty1=value1; yourProperty2=StoppedDeallocated; PowerState=Stopped; OperationStatus=OK}} 

        foreach (PSObject r in result) 
        { 
         //access to values 
         string r1 = r.Properties["yourProperty"].Value.ToString(); 
        } 
       } 

hoffe, das hilft!

3

Wir könnten PowerShell-Cmdlets Import-module verwenden, um der aktuellen Sitzung entsprechende Module hinzuzufügen. Wir könnten Force-Parameter verwenden, um ein Modul erneut in dieselbe Sitzung zu importieren.
Import-module -name azure -force

Die Import-Sache ist, dass das importierte Modul auf dem lokalen Computer oder einem Remote-Computer installiert werden muss. Wenn wir also Azure PowerShell-Cmdlets aus dem C# -Projekt ausführen möchten, müssen wir sicherstellen, dass Azure PowerShell installiert ist. Wir können das Installationsmodul AzureRM oder Azure verwenden. Weitere Details finden Sie unter Get Started Azure PowerShell cmdlets. In der Azure-VM wird Azure PowerShell standardmäßig installiert. Informationen zum Aufrufen des PowerShell-Befehls oder der PS1-Datei unter Verwendung von C# finden Sie in der Dokumentation von Prageeth Saravanan, link oder einem anderen SO Thread.

Verwandte Themen