我有一个需要sta模式的函数(function1)。我想从非sta模式poshconsole中调用此函数。这在我的个人资料
中有function1时有效$command = "function1 'MyArguments'"
powershell -sta -command $command
但是当我没有在配置文件中使用function1并且我打电话
时,我怎么能这样做呢?powershell -sta -noprofile -command $command
我可以使用powershell.exe调用执行多个命令吗?或者我可以移交一个customprofilepath?
答案 0 :(得分:2)
您可以用分号(;)分隔多个命令,例如,点源包含您的函数的脚本,然后调用函数:
powershell -sta -noprofile -command ". c:\functions.ps1 ; function1 'MyArguments'"
答案 1 :(得分:1)
如何处理STA有一些方法:
如果您将调用powershell.exe(因为它显然更容易),您可以先使用该函数加载脚本,然后执行function1 'My arguments'
powershell -sta -noprofile -command '<pathToYourScript>.ps1; function1 args'
我尝试将-file
参数和-command
参数一起使用,但这不起作用。
答案 2 :(得分:1)
如果您正在运行PowerShell Community Extensions,则可以使用Invoke-Apartment,例如:
PS> Invoke-Apartment -Apartment STA `
-Expr {[Threading.Thread]::CurrentThread.ApartmentState}
STA