1

我已经为此工作了 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 实际上总是会出错。它只是隐藏它:

http://connect.microsoft.com/PowerShell/feedback/details/371321/benign-errors-for-missing-closing-are-left-in-the-error-variable

果然,如果我在常规窗口中键入上述命令之一,虽然它静默工作,但如果我稍后返回并查看 $error 对象,则会出现相同的错误。所以基本上 ISE 已经决定停止压制这些错误。我查看了所有我能想到的 $WarningPreference $ErrorActionPreference 等设置,但它们在 ISE 和普通控制台中是相同的。

提前感谢您的帮助。

更新 哇我觉得我很愚蠢。显然这是预期的行为。我可以发誓它的行为稍早一点不同。我想我累了。

4

1 回答 1

1

在 PowerShell ISE 中,您可以在命令窗格中运行多行命令。按 SHIFT+ENTER 输入多行命令的每一行,在最后一行后按 ENTER 执行多行命令。您可以在如何使用 Windows PowerShell ISE 中的控制台窗格中找到它。

于 2013-10-18T03:29:03.683 回答