Запуск сценариев powershell из приложения Windows .NET - PullRequest
1 голос
/ 28 июля 2010

Мне нужно запустить сценарии из приложения Windows vb.net.

У меня есть сценарии, работающие в фоновом режиме;

 Using MyRunSpace As Runspace = RunspaceFactory.CreateRunspace()
      MyRunSpace.Open()
      Using MyPipeline As Pipeline = MyRunSpace.CreatePipeline()
        MyPipeline.Commands.AddScript("import-module -name " & moduleName &
                              vbCrLf &
                              "(get-module -name " & moduleName & ").version")


        Dim results = MyPipeline.Invoke()
        'Do something with the results
      End Using

      MyRunSpace.Close()
    End Using

Однако я сейчаснеобходимо иметь возможность запуска PowerShell (не в фоновом режиме), например.Когда появляются запросы;

Set-ExecutionPolicy unrestricted

В настоящее время я изучаю пространство имен Microsoft.PowerShell.ConsoleHost, чтобы узнать, могу ли я использовать что-то вроде;

Dim config = RunspaceConfiguration.Create
ConsoleShell.Start(config, "Windows PowerShell", "", New String() {""})

Может кто-нибудь посоветовать мне пожалуйста ???

РЕДАКТИРОВАТЬ: Я немного выдумал с этим;

  Public Function RunPowershellViaShell(ByVal scriptText As String) As Integer
    Dim execProcess As New System.Diagnostics.Process
    Dim psScriptTextArg = "-NoExit -Command ""& get-module -list"""
    'Dim psScriptTextArg = "-NoExit -Command ""& set-executionPolicy unrestricted"""
    'Dim psScriptTextArg = ""-NoExit -Command """ & scriptText & """"

    execProcess.StartInfo.WorkingDirectory = Environment.SystemDirectory & "\WindowsPowershell\v1.0\"
    execProcess.StartInfo.FileName = "powershell.exe"
    execProcess.StartInfo.Arguments = psScriptTextArg
    execProcess.StartInfo.UseShellExecute = True
    Return execProcess.Start
  End Function

Но должен быть лучший способ ??

1 Ответ

4 голосов
/ 28 июля 2010

Существует различие между ядром PowerShell и его хостом.Вам нужно запустить движок в вашем приложении, а затем запустить отдельный хост (на котором также размещается движок PowerShell) для обработки запросов.Возможно, вы захотите изменить приложение, чтобы оно действовало как сам хост.Затем вы можете реагировать на приглашения (read-host) и всплывающие диалоговые окна или что-то еще.Взгляните на это соответствующее пространство имен PowerShell .Также ознакомьтесь с этим сообщением в блоге о создании простого PSHost .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...