You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell_ISE执行#Requires命令时出现管道创建错误求助

解决PowerShell中#Requires命令触发的Pipeline创建错误

首先明确你的问题场景:在PowerShell ISE或控制台中使用#Requires -Version 3.0时,触发了如下错误:

An error occurred while creating the pipeline.

  • CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
  • FullyQualifiedErrorId : RuntimeException

你的测试环境PowerShell版本信息如下:

Name                           Value
----                           -----
PSVersion                      5.1.14409.1012
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14409.1012
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

结合我处理这类问题的经验,下面给你分析具体原因和对应的解决方案:

原因1:#Requires命令位置不符合要求

#Requires是脚本专属指令,必须放在.ps1脚本文件的最开头——前面不能有任何内容,包括空行、其他注释、甚至不可见的特殊字符。如果它不是第一行,PowerShell无法正确识别这个指令,就会抛出错误。

解决方案:
把#Requires移到脚本的第一行,示例如下:

#Requires -Version 3.0

# 这里开始编写你的脚本逻辑
Get-ChildItem -Path C:\

原因2:在交互式控制台直接使用#Requires

很多新手容易踩这个坑:#Requires只能用于脚本文件,不能在交互式PowerShell控制台(包括ISE的命令窗格)中直接输入执行。如果在控制台里敲这个命令,PowerShell会把它当成普通注释,但后续执行时会因为指令上下文不匹配触发报错。

解决方案:
如果要测试#Requires的效果,把它写入.ps1文件后再执行脚本:

  1. 新建一个Test-Requires.ps1文件,写入开头的#Requires和测试代码
  2. 在控制台中执行:.\Test-Requires.ps1

原因3:脚本文件编码有问题

PowerShell 5.1对无BOM的UTF-8编码支持不够友好,如果你的脚本是用无BOM的UTF-8保存的,开头的#Requires可能会被识别为乱码或无效字符,进而触发报错。

解决方案:
把脚本文件的编码改成UTF-8 with BOM或者ASCII:

  • 在PowerShell ISE中:点击「文件」→「另存为」→ 选择编码为「UTF-8」(ISE默认的UTF-8是带BOM的)
  • 用VS Code等编辑器:保存时选择「UTF-8 with BOM」编码

额外排查点

如果以上方法都没解决,你可以检查脚本开头是否有不可见的特殊字符(比如零宽空格),用编辑器的「显示所有字符」功能查看,删除多余字符后再测试。

内容的提问来源于stack exchange,提问作者ScriptMonkey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:47