我想在PowerShell中导入一个需要-STA选项的模块,我将Runspace.ApartmentState设置为STA,但是当我导入模块时失败-STA选项失败了,我尝试使用模块" StarWindX& #34;但我不认为这是模块相关的问题,这里是代码:
static void Main(string[] args) {
try {
var iss = InitialSessionState.CreateDefault();
iss.ApartmentState = System.Threading.ApartmentState.STA;
using (PowerShell ps = PowerShell.Create(iss)) {
Console.WriteLine("ApartmentState: " + ps.Runspace.ApartmentState.ToString());
ps.AddScript(
"Import-Module StarWindX"
);
Collection<PSObject> PSOutput = ps.Invoke();
if (ps.Streams.Error.Count > 0) {
foreach (var error in ps.Streams.Error) {
Console.WriteLine("ps error: " + error.ToString());
Console.WriteLine("ps error: " + error.ScriptStackTrace);
}
}
foreach (PSObject outputItem in PSOutput) {
if (outputItem != null) {
Console.WriteLine("ps: " + outputItem.ToString());
}
}
}
} catch (Exception ex) {
Console.WriteLine(ex.Message);
Console.WriteLine(ex.StackTrace);
}
Console.ReadLine();
}
输出是:
ApartmentState:STA
ps错误:StarWindX不支持当前的公寓。您需要使用-STA开关运行此脚本以使用StarWindX。
ps错误:at,C:\ WINDOWS \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ StarWindX \ StarWindX.psm1:ScriptBlock第4行,无文件:第1行
这是.psm1文件的前4行:
if ($host.Runspace.ApartmentState -ne 'STA')
{
#write-host "You need to run this script with -STA switch or inside ISE"
throw "StarWindX doesn't support current appartment. You need to run this script with -STA switch to use StarWindX."
}
如何正确设置ApartmentSate?