Выполнить командлеты Service Service в коде C#

Я следовал за http://jeffmurr.com/blog/?p=142 для вызова сценариев powershell из C#. Но я получаю ошибку как

The term 'Connect-ServiceFabricCluster' is not recognized as the name of a  
cmdlet, function, script file, or operable program. Check the spelling of  
 the name, or if a path was included, verify that the path is correct and try again.

Как это сделать, чтобы добиться успеха.

Ниже приведен код, который я попробовал. Я передаю значение для текстового поля команды как Connect-ServiceFabricCluster -ConnectionEndpoint "localhost:19000""

 public void DeployMicroservices()
        {
            string result = string.Empty;
            ResultBox.Text = string.Empty;

            // Initialize PowerShell engine
            var shell = PowerShell.Create();

            // Add the script to the PowerShell object
            //shell.Commands.AddScript(Server.MapPath("~")+"Powershell\\microservice.ps1");

            shell.Commands.AddScript(commands.Text);
            // Execute the script
            var results = shell.Invoke();

            if (shell.Streams.Error.Count > 0)
            {
                var builder = new StringBuilder();
                foreach (var error in shell.Streams.Error )
                {
                    builder.Append(error.ToString() + "\r\n");
                }
                ResultBox.Text = Server.HtmlEncode(builder.ToString());
            }

            // display results, with BaseObject converted to string
            // Note : use |out-string for console-like output
            if (results.Count > 0)
            {
                // We use a string builder ton create our result text
                var builder = new StringBuilder();

                foreach (var psObject in results)
                {
                    // Convert the Base Object to a string and append it to the string builder.
                    // Add \r\n for line breaks
                    builder.Append(psObject.BaseObject.ToString() + "\r\n");
                }

                // Encode the string in HTML (prevent security issue with 'dangerous' caracters like < >
                ResultBox.Text = Server.HtmlEncode(builder.ToString());

            }
        }

Моя конечная цель - создать сайт, откуда я мог бы развернуть приложение в кластере. Или же я должен войти в систему, где установлен SF, и выполнить команды Power Shell вручную.

2 ответа

Решение

Хорошо, я нашел душу. Проблема возникает из-за того, что мое приложение работает в 32-битном режиме, командлеты сервисной фабрики не загружены. Я конвертировал мое приложение в 64-битную версию, и теперь

Connect-ServiceFabricCluster -ConnectionEndpoint "localhost:19000"  

определены.

Вам необходимо импортировать ServiceFabric модуль, если вы хотите использовать его:

InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new[]{"ServiceFabric"});

var shell = PowerShell.Create(iss);
Другие вопросы по тегам