2016-10-03 9 views
1

XAML을 사용하여 WPF 폼을 표시하는 powershellscript가 있습니다. 이 스크립트를 실행하려면 PowerShell 콘솔을 STA 모드에서 시작해야합니다 (MTA 모드의 PS 2.0 기본값).스크립트에서 powershell 모드를 STA로 변경하십시오.

내가이 명령을 사용하여 콘솔의 모드를 변경, 기회를 알고

powershell -sta 

그러나 미래에 내 스크립트가 어떤 매개 변수없이 다른 programm에 의해 자동으로 실행됩니다

. 그래서 -sta 매개 변수로 콘솔을 먼저 호출 할 수 없습니다.

WPF/XAML이 실행되기 때문에 powershell 스크립트에서 직접 모드를 변경할 수 있습니까? 다음은 간단한 예제

+2

스레딩 모델은 실행중인 PowerShell을 인스턴스 내에서 변경할 수 없습니다. 이것이 바로 powershell -sta가하는 것입니다 : 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 프로세스가 시작된 후 몇 가지 오류가 발생합니다. 그러나 현재이 문제에 대한 해결 방법을 사용하고 있습니다. powershell.exe에 STA 및 file 매개 변수를 호출하는 두 번째 스크립트를 만들었습니다. -> powershell.exe -sta -file D : \ Testdirectory \ Powershell \ ps_gui.ps1 – Laser