PowerShell и однопоточные апартаменты

Я разработал небольшой инструмент с графическим интерфейсом в PowerShell, используя WPK.

У меня есть следующая команда запуска

powershell -ExecutionPolicy Unrestricted -file PowerTools.ps1 -noexit -sta

Я получаю следующую ошибку.

New-Object : Exception calling ".ctor" with "0" argument(s): "The calling thread must be STA, because many UI components require this."
At \WindowsPowerShell\Modules\WPK\GeneratedControls\PresentationFramework.ps1:34
10 char:29
+         $Object = New-Object <<<<  System.Windows.Window
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId :     ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

Из моего Googling STA стоит "однопоточная квартира", я заметил, что у powershell.exe есть флаг "-sta", но это тоже не помогает.

Суть моего файла ps1 выглядит следующим образом

Import-Module WPK

function get-gui()
{
      New-Window  -WindowStartupLocation CenterScreen `
       -Width 1200 -Height 200 -Show {

      New-Grid -Rows 32, 32, 32, 32 -Columns 110, 200* {
            ...
          }
        }
    }
}

get-gui

Любые намеки, пожалуйста?

(Я потратил довольно много времени на собственные исследования)

2 ответа

Решение

Это так просто!:) Спасибо за ваше руководство, Kayasax!

powerShell -sta -file PowerTools.ps1

https://technet.microsoft.com/en-us/library/hh847736.aspx говорит, что -file должен быть последним в списке параметров, потому что все после имени файла интерпретируется как параметры файла. Вот почему это работает, когда -sta указан ранее -file, но не работает после -file,

Другие вопросы по тегам