2017-01-23 7 views
0

Я пытаюсь разработать приложение формы .Net для управления лазурными виртуальными машинами в C# с помощью командлетов Powershell. Мне нужно будет использовать модуль Azure для этого.Использование C# для выполнения команды Powershell (azureVM)

Один из командлета будет Надстройка AzureAccount

Мой вопрос, как я могу включить этот модуль (Azure) в проекте C#?

+5

Вам нужно будет создать сценарий PS и вызвать его из C#. См. Https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/ –

+0

У вас есть обновление об этой теме? –

+0

Я только что разместил answert @ TomSun-MSFT –

ответ

1

В разделе комментариев @Prageeth Saravanan дал полезную ссылку о том, как интегрировать PowerShell в C#.

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

Быстрый пример:

Сначала я должен был включать в себя эти рефов:

System.Management.Automation 
System.Collections.ObjectModel 

Примечание: Вам нужно добавить пакет NuGet для "Management.Automation" , Просто введите «System.Management.Automation», вы найдете его.

C# код:

//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(); 
        } 
       } 

Надеется, что это помогает!

3

Мы могли бы использовать командлеты PowerShell Import-module, чтобы добавить соответствующие модули к текущему сеансу. Мы могли бы использовать параметр force для повторного импорта модуля в один и тот же сеанс.
Import-module -name azure -force

Импорт заключается в том, что импортируемый модуль необходимо установить на локальный компьютер или удаленный компьютер. Поэтому, если мы хотим выполнить командлеты Azure PowerShell из проекта C#, нам нужно убедиться, что Azure PowerShell установлен. Мы можем использовать модуль установки AzureRM или Azure, более подробную информацию см. В разделе Get Started Azure PowerShell cmdlets. В Azure VM по умолчанию установлена ​​Azure PowerShell. О том, как вызвать команду PowerShell или файл PS1 с помощью C#, пожалуйста, обратитесь к Prageeth Saravanan, указанному link или другому SO Thread.

 Смежные вопросы

  • Нет связанных вопросов^_^