2016-10-03 15 views
1

XAMLを使用してWPFフォームを表示するpowershellscriptがあります。このスクリプトを実行するには、PowerShellコンソールをSTAモード(MTAモードのPS 2.0のデフォルト)で起動する必要があります。スクリプトでpowershellモードをSTAに変更します。

私は、このコマンドでコンソールモードを変更するには、機会を知っている:

powershell -sta 

しかし、将来的には私のスクリプトは、任意のパラメータなしで他のプログラムの開発によって自動的に実行されます。そのため、コンソールは最初に-staパラメーターを指定して呼び出すことはできません。

WPF/XAMLが起動されているので、powershellスクリプトで直接モードを変更する機会はありますか?

+2

スレッドモデルは、実行中のPowerShellのインスタンス内から変更することはできませんので、あなたが希望スレッドモデルを使用して新しいプロセスを起動する必要があります。 PowerShellは、STAモードで新しいPowerShellプロセスを開始します。 –

+0

ありがとうございます!だから、STAモードで起動したpowershellを使って、新しいプロセスで同じpowershellscirptでスクリプトブロックを開始することは可能ですか?私に例を教えてもらえますか? – Laser

答えて

1

ここでは簡単な例:

$x = { 
    for($i= 0;$i -le 10;$i++){ 
     Write-host $i 
    } 
} 

Start-Process Powershell.exe -argumentlist "-sta -NoExit -NoProfile -ExecutionPolicy Bypass -Command $X" 
+1

別のスクリプトからスクリプトを開始することもできます。 – guiwhatsthat

+1

ありがとう!私はあなたの例をテストし、それは正常に動作します。しかし、私はPowerShell guiコード全体をscriptblock変数に壊すと問題があるようです。新しいPowerShellプロセスが開始された後にいくつかのエラーが発生します。しかし、私は現時点でこの問題の回避策を使用しています。私はSTAとファイルパラメータを持つpowershell.exeを呼び出す2番目のスクリプトを作成しました。 - > powershell.exe -sta -file D:\ Testdirectory \ Powershell \ ps_gui.ps1 – Laser

関連する問題