2

我在 PowerShell 中非常尴尬,我只在家里使用它来完成我自己的简单任务,在我的 Windows XP 下没有可用的升级到 PS2。下一个测试显示我的 PowerShell 1.0 默认使用 MTA 模式。

[threading.thread]::CurrentThread.GetApartmentState()

像这样的电话......

PowerShell.exe –STA c:\scripts\file.ps1

...总是因错误而失败:

一元运算符“-”后缺少表达式。在 line:1 char:2 + -S <<<< TA c:\scripts\file.ps1

看起来我的 PS1 无法识别 –STA 开关。我做错了什么?有什么办法可以在 PS1 中以 STA 模式运行我的脚本吗?

4

2 回答 2

1

命令中 STA 之前的破折号字符是“–”Unicode U+2013“En Dash”,它应该是“-”Unicode U+002D“Hyphen-Minus”。您可以在浏览器控制台 (F12) 中使用此 JavaScript 函数进行尝试:

function getHex(character) {
    return "0x" + character.charCodeAt(0).toString(16);
}

getHex('–'); // 0x2013
getHex('-'); // 0x2d

也许您从网页或 PDF 或 Word 文档中复制了它。尝试键入命令而不是复制/粘贴,它将起作用。

新版本的 PowerShell 将识别破折号的两个字符。

于 2014-09-27T17:00:55.947 回答
0

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Sta -File c:\scripts\file.ps1

于 2014-05-14T13:54:47.973 回答