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宣言!」でも紹介しています。
Windows PowerShell宣言! (Windows Script Programming)
購入頂いた方は「PowerShellWPFを利用する」「PowerShellXAMLを利用する」のページをご覧ください。