PowerShellをSTAスレッドで実行する方法(1)
PowerShellはSTAスレッドで実行できない?
PowerShell Teamのブログから。
Windows PowerShell Thread.ApartmentState and PowerShell Execution Thread
上記記事より:
Recently someone, in internal discussion groups, asked if it is possible to set “ApartmentState” on the powershell’s execution thread.
先日のMVP Global Summitで、PowerShell Teamに対して「STAスレッド上でのスクリプト実行」のサポート要望を出しましたが、この記事の「someone」はもしかしたら私の事なのかな?
STAスレッド上でPowerShellスクリプトを実行するコマンドレットを作成する
さて、上記は、STAスレッドでのスクリプト実行について言及した記事です。ApartmentStateを設定可能にするコマンドレットのサンプルを紹介しています。STAスレッド上でPowerShellスクリプトが実行可能になると、STAを必要とするコンポーネントをPowerShellから操作可能になります。
例えば、以下のコンポーネントはSTAモードを必要とするので、通常はPowerShellから利用できませんが、上記記事の手法で扱うことができるようになるはずです。
PowerShell単体でSTAモードを利用可能にする
さて、ここからが本題です。
C#やVBでコマンドレットを作成した場合、ソースをコンパイルした後、PowerShellにスナップインを組み込む必要があり、それなりに手間がかかかります。そこで、手間をかけずに、PowerShell単体だけでSTAモードを利用可能にす方法を紹介したいと思います。
今回は前フリだけです。次回から具体的な解説に入ります。
備考
上記手法は、本日発売の「Windows PowerShell宣言!」でも紹介しています。
購入頂いた方は「PowerShellでWPFを利用する」「PowerShellでXAMLを利用する」のページをご覧ください。