2010-07-28 8 views
1

Мне нужно запустить скрипты из приложения windows vb.net.Запуск сценариев powershell из приложения .NET windows

У меня есть сценарии, работающие на заднем плане;

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() {""}) 

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

EDIT: Я немного погряз в этом;

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 

Но есть ли лучший способ?

ответ

4

Существует различие между двигателем PowerShell и его хостом. Вы хотите запустить движок в своем приложении, а затем запустить отдельный хост (который также поддерживает механизм PowerShell) для обработки запросов. Возможно, вы захотите изучить модификацию приложения для того, чтобы действовать как сам хост. Затем вы можете реагировать на подсказки (чтение-хост) и поп-диалоговые окна или что-то еще. Взгляните на это relevant PowerShell namespace. Также проверьте это blog post on creating a simple PSHost.

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