PowerShell和单线程公寓

时间:2012-11-29 10:08:02

标签: multithreading powershell batch-file wpk

我使用WPK在PowerShell中开发了一个小型GUI工具。

我有以下启动命令

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

从我的谷歌搜索,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 个答案:

答案 0 :(得分:2)

这很简单! :)感谢您的指导,Kayasax!

powerShell -sta -file PowerTools.ps1

答案 1 :(得分:0)

https://technet.microsoft.com/en-us/library/hh847736.aspx表示-file必须位于选项列表中的最后一位,因为文件名后面的所有内容都被解释为文件的参数。这就是为什么它在-sta之前列出-file时有效,但在-file之后无效。