我已经为此工作了 2 个小时,我正在拔头发。我在 ISE 中处理我的个人资料脚本。我不知道它是否相关,但我试图将一些命令存储在一个变量中并稍后执行它们。无论如何,在尝试创建此处字符串时,我开始遇到一个奇怪的错误:
PS > $foo = @"
通常我会期望
>>
跟随,但我收到了这条消息:
PS C:\Users\lamartin> @" 字符串缺少终止符:"@. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
长话短说,我发现我所有的多行命令都被破坏了,但仅在 ISE 中:
PS > gci |
不允许使用空的管道元素。+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : EmptyPipeElement
PS > gci |%{
语句块中缺少结束“}”。+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : MissingEndCurlyBrace
我删除了所有配置文件和所有模块。我确认没有额外加载(我可以找到)。这是我发现的一些有趣的东西。事实证明,每当您进行延续操作时,Powershell 实际上总是会出错。它只是隐藏它:
果然,如果我在常规窗口中键入上述命令之一,虽然它静默工作,但如果我稍后返回并查看 $error 对象,则会出现相同的错误。所以基本上 ISE 已经决定停止压制这些错误。我查看了所有我能想到的 $WarningPreference $ErrorActionPreference 等设置,但它们在 ISE 和普通控制台中是相同的。
提前感谢您的帮助。
更新 哇我觉得我很愚蠢。显然这是预期的行为。我可以发誓它的行为稍早一点不同。我想我累了。