PowerShell 脚本执行被阻止了?

你的运行环境(版本号「点击帮助-关于-复制」):

3.3.83

问题描述(你遇到了什么问题?):

trae ide 中安装了一个officecli skill, 在以前的版本中,可以通过该Skill 来创建office文件,但最近在使用该skill时,一直报

PowerShell 脚本执行被阻止了。让我尝试用另一种方法来加载该技能。

复现步骤(如何才能重现这个 Bug/问题?):
1.
2.
3.

报错信息或截图(如有):

请在此处粘贴截图或日志代码

你好呀~看到你遇到了 PowerShell 脚本执行被阻止的问题。不过你的问题描述好像没写完(“一直报”后面断掉了),能把完整的报错截图或文字发一下吗?

根据你的描述,这可能是终端或沙箱的安全限制拦截了脚本。你可以先尝试这个排查方向:
前往 IDE 的「设置 → 对话流 → 自动运行」,看看是否开启了沙箱模式。如果是的话,可以尝试将该 officecli Skill 需要执行的命令加入白名单,让它在沙箱外运行试试。

另外,TRAE 在 Windows 下默认使用 PowerShell,也有可能是系统的 PowerShell 执行策略限制了脚本的运行。

方便补充一下完整的报错信息吗?我们再一起看看怎么解决~ :blush:

全是这 PowerShell 阻止了脚本的报错

是不是现在所有命令都是有这个问题? 以前还可以使用cmd来运行命令,现在cmd 也是包装成一个powershell脚本来执行?这设计谁做的?没有经过测试?

完全理解你的困扰!其实并不是把 cmd 包装成了 PowerShell,而是 TRAE(以及目前的 VSCode)在 Windows 下默认将终端环境设置为了 PowerShell。

你遇到的“脚本执行被阻止”报错,是因为 Windows 系统自带的安全策略(Execution Policy)默认禁止运行本地脚本。当 Skill 尝试执行自动化脚本时,就被 Windows 的安全机制拦截了。

你可以通过下面两种方法快速解决这个问题:

方法一:解除 Windows 脚本限制(推荐)
这样能彻底解决后续运行 PowerShell 脚本的问题:

  1. 在 Windows 搜索菜单里找到 PowerShell,右键选择**「以管理员身份运行」**。
  2. 输入并执行命令:Set-ExecutionPolicy RemoteSigned
  3. 提示确认时输入 Y 回车,然后重启 TRAE 试试。

方法二:把默认终端改回 CMD
如果你还是更习惯用传统的 CMD 跑命令:

  1. 在 TRAE 里按 Ctrl + Shift + P 打开命令面板。
  2. 搜索并选择 Terminal: Select Default Profile(终端:选择默认配置文件)。
  3. 在列表里选择 Command Prompt
    设置好后,后续新执行的命令就会默认走 CMD 了。

你可以试试看哪种方式更顺手,如果调整后还是不行,随时叫我~

太拙了。。。连运行简单的python -v 都报错,以前不会的呀

你是完全正确的,你的截图非常精准地抓到了问题的根本原因!

正如你所看到的,Agent 底层的执行工具(toolhost)现在确实会把所有的命令(哪怕是极其简单的 python -v)先包装成一个临时的 PowerShell 脚本(比如 command.ps1),然后再去执行它。

这种设计通常是为了更好地捕获命令的输出结果、处理环境变量或是管理进程的生命周期。但正如你吐槽的,这个设计在 Windows 的默认环境下确实会“水土不服”——因为 Windows 默认的安全策略(Execution Policy)是严格禁止运行本地 .ps1 脚本的。这就导致了以前能直接跑的命令,现在全被系统拦截了。

我已经把这个非常关键的反馈(toolhost 包装 ps1 脚本导致触发 Windows 默认执行策略拦截)记录并同步给研发团队了,这确实是一个在 Windows 默认环境下体验不太好的设计。

为了让你现在能立刻恢复使用,你需要手动放开一下 Windows 的脚本执行权限:

  1. 在 Windows 开始菜单搜索 PowerShell,右键选择**「以管理员身份运行」**。
  2. 复制并执行以下命令:
    Set-ExecutionPolicy RemoteSigned
    
  3. 如果系统提示是否更改执行策略,输入 Y 并回车。
  4. 重启 TRAE。

这样设置后,Windows 就会允许运行本地生成的这些临时 .ps1 脚本了,你的命令和 officecli Skill 就能正常工作了。

非常感谢你这么敏锐地抓到了底层的执行逻辑,给你带来的不便真的很抱歉,快试试上面的命令能不能解决你的燃眉之急!

你们的工程师全用的mac么?只要有一个人用windows就能很明显的发现这个问题

这个问题我可能没法在这里帮你彻底解决,已转人工同学接手,后续不再自动回复,请稍等他们联系你。

可以切cmd试试能用吗,感觉是系统给禁用了

windows默认就是不允许执行ps1脚本的。 trae 在执行命令时,无论什么命令都是包装成ps1,再执行?

配置下这个呢

没有配置这个,我直接把windows 全系统设置为允许执行ps1脚本了。

我纯小白,编译latex和python时,这几天也频繁报错“.ps1,因为在此系统上禁止运行脚本”,根本用不了

这就是最近trae更新出来的一个BUG,等着改吧,看TRAE要改不

这个配置了默认还是一样用 ps1 脚本

get!这个是因为最近的一个优化和系统终端环境不兼容,在下次更新会修复。在这之前可以:

  • 需要看一下设置 - 对话流 - 极速终端切换为系统终端;
  • 或者在powershell执行: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 允许执行