2017-03-23 6 views
0

私はいくつかのPowershellスクリプトを実行するアプリを持っています。 (基本的には、SQLデータベースに格納されたPSスクリプトを取り出して実行するラッパーアプリケーションです。)私はC#から実行しているPowerShellコードのrunspaceをどのように設定できますか?

私が追加したPowershellスクリプトの1つは、現在失敗しています。 STAのアパートの状態で実行します。しかし、私はc#でアパートの状態を設定する方法がわかりません。

次のように私が使用しています機能は次のとおりです。

public bool RunSomePowershell(string script) 
{ 
using (PowerShell PowerShellInstance = PowerShell.Create()) 
{ 
    PowerShellInstance.AddScript(script); 
    var result = PowerShellInstance.Invoke(); 
    return Convert.ToBoolean(result[result.Count -1].ToString()); // Result should be last output from script (true or false) 
} 
} 

私はSTAモードでスクリプトを実行するために、これを設定するにはどうすればよいですか?

答えて

2

まず、実行空間を作成し、ApartmentStateプロパティ設定:次に

using System.Threading; 
using System.Management.Automation.Runspaces; 
// ... 

Runspace rs = RunspaceFactory.CreateRunspace(); 
rs.ApartmentState = ApartmentState.STA; 

は、前述の実行空間を使用するPowerShellインスタンスのRunspaceプロパティを設定:

PowerShellInstance.Runspace = rs; 
関連する問題