Вызов Powershell (), возвращающий ноль в C# для команды запуска болта - PullRequest
0 голосов
/ 01 апреля 2020

Я могу запустить команду «Puppet Bolt» в PowerShell. В powershell я получил вывод, как показано ниже

Запущено на winrm: // remotemachine

Завершено на winrm: // remotemachine

STDOUT:
RemoteMachineHostName

Успешно на 1 цели Выполнить на 1 tartget в 3.2 se c

Мой C#, как показано ниже

        PowerShell ps = PowerShell.Create();

        ps.AddScript("C:\\User1\\GetRemoteAzureVMHostName.ps1");

        Collection<PSObject> results =  ps.Invoke();  // in results, I'm getting value as 0.

        foreach (PSObject result in results)
        {
            //Do something
        }

Я попытался изменить цель платформы сборки на x64 в Visual Studio 2019, но это не помогло не работает.

Как исправить вышеуказанную проблему

Обновление 1:

Я использовал приведенную ниже команду в сценарии powershell.

bolt command run hostname --targets winrm://158.28.0.546 --no-ssl-verify --user testuser123 --password test@84p

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Я понял, что Visual Studio вызывает 32-разрядную PowerShell и не может запускать команды bolt, поскольку модуль Bolt установлен на 64-разрядном PowerShell.

Я изменил платформу сборки проекта на x64 и собрал ее.

Сработало.

0 голосов
/ 02 апреля 2020

Кажется, вы не можете ввести путь PowerShell к методу AddScript(). Вот пример, который запускает сценарий PowerShell через C#:

private static string script =File.ReadAllText(@"Path\Sum.ps1");
private static void CallPS1()
{
    using (Runspace runspace = RunspaceFactory.CreateRunspace())
        {
         runspace.Open();

         PowerShell ps = PowerShell.Create();
         ps.Runspace = runspace;
         ps.AddScript(script);
         ps.Invoke();

         foreach (PSObject result in ps.Invoke())
         {
             Console.WriteLine("CallPS1()");
             Console.WriteLine(result);
         }

}

        }

Так что вы можете попробовать прочитать сценарий и затем ввести его в методе AddScript().

...