0

結果を待たずに、c#からPowerShellスクリプトを実行しようとしています。

 string cmdArg = "MyScript.ps1";
 //Create New Runspace
 Runspace runspace = RunspaceFactory.CreateRunspace();
 runspace.ApartmentState = System.Threading.ApartmentState.STA;
 runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
 runspace.Open();

 //Adds the command
 pipeline.Commands.AddScript(cmdArg);
 pipeline.Commands[0].MergeMyResults(PipelineResultTypes.Error, PipelineResultTypes.Output);

 //Do not wait for a result
 pipeline.InvokeAsync();
 runspace.Close();

ただし、スクリプトが終了するまで待機します。

4

2 に答える 2

1

これは役に立ちますか?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms569311(v=vs.85).aspx

備考には、非同期にはRunSpace.OpenAsync()メソッドを使用する必要があると記載されています。

于 2012-07-04T11:00:24.657 に答える
1

BeginInvokeこのmsdnサンプルで強調表示されているように-http ://msdn.microsoft.com/en-us/library/windows/desktop/ee706580(v= vs.85 ).aspxを使用します。スクリプトが実行さasynchronouslyれ、events are used to handle the output

// Invoke the pipeline asynchronously.
IAsyncResult asyncResult = powershell.BeginInvoke<PSObject, PSObject>(null, output);
于 2012-07-04T20:54:47.190 に答える