• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shadowyue
0.36D
V2EX  ›  程序员

为什么 AI 在 win 平台天天都在肘击 powershell?🫪

  •  
  •   shadowyue · 23h 1m ago · 7210 views

    powershell 如此难用吗,大模型都绷不住🫪

    79 replies    2026-09-02 15:55:01 +08:00
    tomyark123
        1
    tomyark123  
       23h 1m ago   ❤️ 1
    加 skills 没有改善吗
    ruanimal
        2
    ruanimal  
       22h 59m ago   ❤️ 5
    脑瘫的 "\" 路径符号,导致模型的 shell 命令很容易出问题,比如遇到转义。。
    yafoo
        3
    yafoo  
       22h 30m ago   ❤️ 5
    每次执行命令都是错几次才成功
    shadowyue
        4
    shadowyue  
    OP
       22h 27m ago
    我已经绷不住装了 wsl
    Duolingo
        5
    Duolingo  
       22h 20m ago   ❤️ 10
    在本站别人那抄来的适用于 codex 的 AGENTS.md ,自己略微改了一下,其它 agent 改改也能用:

    ```
    ## Windows 约束
    **当前环境是 Windows 10 / pwsh7**
    - 默认禁止使用 Bash 语法,除非确定此 shell 处在 Linux 环境
    - 不要使用 Bash 引号/转义习惯,在 PowerShell 命令里,复杂正则优先用单引号包裹。
    - 如果正则本身同时包含单引号和双引号,优先拆成多个简单 rg 命令。
    - 执行多行 Python 禁止使用 Bash heredoc ;改用 PowerShell here-string | python -
    - pwsh 中,语句块表达式(如 `foreach`、`if`)不能直接作为管道输入。 需要先使用 `$()` / `@()` 包裹,或先赋值给变量。 普通命令输出可直接进入管道,无需额外包裹。
    - PowerShell 使用 `rg` 时,通配目录必须先用 `Get-ChildItem -Filter` 展开为真实路径,禁止直接把含 `*` 的搜索路径传给 `rg`。
    ```
    timnotom
        6
    timnotom  
       22h 13m ago   ❤️ 1
    pi agent 默认用的是 git bash ,感觉问题不大? 体验就还行
    lisxour
        7
    lisxour  
       22h 11m ago   ❤️ 1
    @shadowyue 你装了 wsl 之后,命令调用可能宿主 wsl 两个环境混着调用,包括前端一些库是需要编译成本地代码的,很容易命令报错,你楼下的可以用,写了提示词好很多了
    zxjxzj9
        8
    zxjxzj9  
       22h 11m ago   ❤️ 1
    @timnotom 想要个补全卡的要死. 和 zsh 相比各种功能少的可怜,最后还是装了 wsl...
    mmdsun
        9
    mmdsun  
       22h 7m ago via iPhone   ❤️ 1
    codex 会这样吧 Claude Code 除非你设置了 CLAUDE_CODE_USE_POWERSHELL_TOOL 才会用系统原生命令。
    zed1018
        10
    zed1018  
       22h 5m ago   ❤️ 3
    其实我发现不光是 pwsh ,zsh 也经常肘击,时不时就出现转义导致的拼接出现问题。
    NewYear
        11
    NewYear  
       21h 42m ago
    @ruanimal #2

    你说的是路径里的\符号吗?

    事实上从 win95 就完全兼容用/代替\了。

    这导致了什么问题吗 0 0 、
    yippees
        12
    yippees  
       21h 39m ago
    被 ai psw cmd 转义折腾得,,现在直接让它写个 py / js 运行了.
    yiyiwa
        13
    yiyiwa  
       21h 28m ago
    windows 下,还有比 pwsh 更加好的吗?这个才是原生啊。
    tianhehechu
        14
    tianhehechu  
       21h 21m ago   ❤️ 6
    因为早年互联网的教程、github 的 README ,都有一种奇怪的习惯:

    假装个人用户占比最大的 Windows 从未存在,

    然后在讲解操作命令的时候,只给出 Linux 命令;

    在演示图形操作的时候,录制 Mac 操作操作视频、贴 Mac 操作截图 或者使用 HTML 渲染一个 Mac 窗口作为装饰。

    后来训练 AI ,从网络上爬取教程。AI 自然就更熟悉 Linux / Mac 命令。

    Mac 搭了 Linux 的便车。
    netlous
        15
    netlous  
       21h 16m ago   ❤️ 16
    @tianhehechu 好几个倒反天罡的点,都不知道该如何评论了
    CuteGirl
        16
    CuteGirl  
       21h 2m ago
    各种反人类设计 都不想吐槽
    cellsyx
        17
    cellsyx  
       20h 55m ago
    用的人少,训练数据少,AI 容易出错
    恶性循环了
    crocoii
        18
    crocoii  
       20h 44m ago via Android
    不如当初继续发展 dos ,现在的 powershell 命令简直没法看。
    ashuai
        19
    ashuai  
       20h 37m ago   ❤️ 7
    @tianhehechu 有没有一种可能,win 用户 99.9999%不用 cli
    coolcoffee
        20
    coolcoffee  
       20h 30m ago via iPhone
    @tianhehechu 大家都偏向用 Linux 作为生产环境,自然是以对齐生产环境的语法为准。

    Windows server 和 SQL server 的授权费用现在仍然不是小公司能玩得起的,
    liudon
        21
    liudon  
       20h 19m ago
    前段时间折腾了一个 windows 应用,实在是太难了。。。
    qiubo
        22
    qiubo  
       19h 1m ago
    因为这个原因换了 mac
    Retas
        23
    Retas  
       18h 47m ago
    是的,WSL 才是归宿
    CatCode
        24
    CatCode  
       17h 59m ago
    作为一个 Win/Linux 双修用户,我的猪脑子都能兼容 Windows Powershell/Powershell 7/Bash ,不知道为啥 AI 还玩不转
    lujiaosama
        25
    lujiaosama  
       17h 55m ago   ❤️ 1
    凑活用吧。安装 PowerShell7 和 RG 。 然后全局 AGENTS.MD 里加入以下内容

    ```
    ## Windows 与命令执行

    - Windows 环境使用当前 PowerShell 7 ;不得调用 `powershell.exe`(当前机器会降级到 Windows PowerShell 5.1 )。除非任务明确要求,不嵌套调用 `pwsh.exe`、`cmd.exe`、Git Bash 、WSL 或其他 shell 。
    - 确需启动独立 PowerShell 7 进程时,使用 `pwsh.exe -NoLogo -NoProfile`,避免加载用户 profile 注入额外命令与配置。
    - 直接使用 PowerShell 语法;避免 Unix 命令及 `cat`、`find`、`where` 等含义不明确的别名或同名程序。
    - PowerShell 字符串和正则在无需变量展开时使用单引号;需要展开时使用双引号,相邻字符有歧义时写 `${name}`。双引号字符串内使用反引号而非反斜杠转义。
    - 多行文本使用 PowerShell here-string ,不使用 Bash heredoc (`<<EOF`)。
    - 将 `foreach`、`if` 等语句块的输出接入管道时,使用 `& { ... } | ...` 包裹,不直接在 `}` 后接 `|`。
    - 命令失败时先检查命令、路径、引号及退出码,不随意切换 shell 。

    ## 检索

    - 文本检索优先使用 `rg`,文件枚举优先使用 `rg --files`,按文件名查找使用 `rg --files | rg`。
    - 不把含 `*` 的路径直接作为 `rg` 的 PATH 参数;文件类型筛选使用 `-g`,目录通配先用 `Get-ChildItem -Directory -Path` 展开为 `FullName` 后再传给 `rg`。
    - `rg` 不可用时,使用 PowerShell 的 `Get-ChildItem` 和 `Select-String`;如需安装工具,先征求用户同意。
    - `rg` 退出码 `1` 表示没有匹配结果,不视为执行错误。
    ```
    sanxidiot
        26
    sanxidiot  
       17h 37m ago
    因为 windows 之前的理念就是一切 ALL IN GUI ,cli 这种东西在微软的理念里面本来就该被 gui 给替代。但是问题是微软大公司病,内部斗争非常严重,导致 gui 没做起来,cli 还只有基本功能。结果到了 AI 时代,agent 需要 cli 而不是 gui ,这直接暴露了微软最大的弊病。事实上,要不是 powershell 勉强在公司内斗中保留下来,否则现在微软在 AI 时代会更加尴尬。
    PrinceofInj
        27
    PrinceofInj  
       17h 34m ago   ❤️ 4
    @CuteGirl PowerShell 可不反人类,比 bash 那些反人类的命令记忆方便多了。PowerShell 反的是 AI ,AI 看多了 bash 的那些莫名奇妙的缩写后不认识 PowerShell 的人类可读命令了。
    tianhehechu
        28
    tianhehechu  
       15h 7m ago   ❤️ 1
    @netlous 你反驳不了事实,所以哑口无言而已
    LokiSharp
        29
    LokiSharp  
       14h 44m ago
    历史遗留原因 pwsh 有很多个版本,AI 的语料会被交叉污染
    CivAx
        30
    CivAx  
       14h 41m ago
    @tianhehechu #28 说得好,希望你能为全世界商业公司最依赖的 CRI 写一份 Powershell compatible layer
    mxT52CRuqR6o5
        31
    mxT52CRuqR6o5  
       14h 5m ago   ❤️ 1
    我觉得和反不反人类关系不大,跟后训练关系很大,很难想象大模型厂商会用 windows 环境去后训练
    appleshan
        32
    appleshan  
       9h 53m ago
    @Duolingo 我已经绷不住了,这是禁止使用不锈钢刀,优先使用生锈的砍柴刀🤓
    CuteGirl
        33
    CuteGirl  
       9h 38m ago
    @PrinceofInj 如果 PowerShell 的那些命令和 bash 比都不算反人类 那我真的无话可说
    maolon
        34
    maolon  
       9h 33m ago
    openai 买了一堆 mac 用来专项训练模型的 computer use 和 terminal use ,但是你从来没听说 openai 买了哪家的 windows 机器来专项训练这个
    xiangran0028
        35
    xiangran0028  
       9h 31m ago
    年初放弃 win 了,改用 mac 开发嵌入式之后爽的一批
    Msxx
        36
    Msxx  
       8h 49m ago via Android   ❤️ 1
    一部分原因是默认安装 powershell5 导致的,powershell7 问题就能明显减少,但又不是默认版本,导致 AI 为了兼容性也经常使用 5 的写法,不过 ChatGPT5.6 在这方面有明显改善了,之前 ChatGPT5.5 经常出问题。
    PrinceofInj
        37
    PrinceofInj  
       8h 24m ago via Android
    @CuteGirl 考你一下 get-netadapter 这个 cmdlet 是做什么的?不要查,直接猜。另外 ss 是干什么的?也不要查,直接猜。
    privater
        38
    privater  
       8h 15m ago   ❤️ 3
    历史渊源吧,ai 研究是从大学实验室出来的,而大学里面 CS 基本 linux + Mac 占了绝对的主流。
    哪怕是 10 多年前还在深度学习时各种 python ,jupyter 的东西都是主流的演示和教程环境了,如今的 AI 不过是延续了这个习惯,Windows 是真的小众。

    反倒是国内,因为当初盗版 Windows 的流行,让 Win 成了绝对的办公主流平台,反而逆向影响到了大学和研究部门的倾向和采购。举个例子,海外的任何网站和服务都不需要安装 IE 插件,而 10 多年前各种学校还是银行 IE 插件都是主流,你即便是用 Mac 或者 linux 都寸步难行,挂个虚拟机跑 IE 都是刚需。

    时间再往前,大家也发现 MS 这公司别看 20 年前是巨人,在如今的世界认知范围里面都是二流存在,其中就包括他家各种内斗和抢夺资源导致自己的技术很难服人,所以即便是 powershell 也没法成为事实上的主流,而本部还有 wsl 这类东西挖墙脚。简单来说就是技不如人,理不服众,你还有去追随这种非主流就是自己负担概念转换成本了。
    junyee
        39
    junyee  
       8h 5m ago
    我自学了一堆语言和脚本.唯独这个 powershell 学不进去.
    可能是碰巧没去学 C#.
    而且 powershell 版本太多,换个环境就不一定能完整 执行,当然这其中有版本和精简原因,而不像 linux 所有 shell 都支持 ash.

    批处理入门快,但是上限低,坑也同样多. 如没有统一的转义符. '/' 用在了路径符, '^' 在某些情况也会出问题(这个符号在正则时又被常用到),有的命令需要使用双符号来转义 . 交互式和批处理又不一样. 没有 stdout 输出捕获符导致只能用 for ,这又带来更多天坑.
    然后 win32 历史原因,代码页,换行符又会带来一堆异想不到的问题.
    zuosiruan
        40
    zuosiruan  
       7h 39m ago via iPhone
    powersbell7+,我用的倒是非常流畅。
    ko20
        41
    ko20  
       7h 19m ago
    老实说因为这个原因换了 Linux
    fredweili
        42
    fredweili  
       7h 13m ago
    美国开发者都是 mac ,win ? who care?
    DoomSlayer
        43
    DoomSlayer  
       7h 6m ago via Android
    @zxjxzj9 试试 oh my posh
    zealotxxxx
        44
    zealotxxxx  
       7h 4m ago
    你没发现因为 ai 的缘故,跟 ai 相关的应用几乎都是 mac + win 么。而且大多数还都是 mac 先上。
    skinny
        45
    skinny  
       6h 55m ago
    管道结果是一个坑,你不能确定返回值是一个对象还是一个数组,除非你强制转换成数组。
    部分命令因为历史原因有坑,为了保证兼容性坑也保留了,比如删除命令的递归搜索删除,它的命令参数和直觉非常不符,必需搭配递归查询再通过管道删除。
    写脚本时按推荐风格是应该使用完整拼写的,但是它又提供很多缩写别名,很多人图省事就全是缩写,AI 都学了忘,所以写得差
    Rorysky
        46
    Rorysky  
       6h 53m ago
    我记得去年 ai coding 能力还不是那么好的时,让 kimi 写了一个 powershell 脚本,整整写了一天,大概用了 50% 月额度,主要坑就是 中文编码 和版本支持啥的问题。当然我是在 mac 上让它写的
    vioulo
        47
    vioulo  
       6h 47m ago
    之前用 codex 会给代码里面加其他编码的字符,经常是改下代码,代码里面的中文注释就乱码了,我还每次让它修。我后面就直接用 linux 解决了
    coconne
        48
    coconne  
       6h 44m ago
    装 fastctx ,然后让 ai 帮你写个 powershell7 的规范(有部分 win 系统命令还是需要 powershell )
    coconne
        49
    coconne  
       6h 43m ago
    不过 fastctx 只支持 codex/cli ,忘记说了
    cloudzhou
        50
    cloudzhou  
       6h 42m ago   ❤️ 1
    @tianhehechu 事实个鬼啊,别说 PowerShell ,之前的 window cmd 我就没见几个人用过
    你这就叫倒置因果,不是什么坏习惯,而是 windows 的命令行,从来不是占主流
    unix/linux 世界本来留下丰富的文档,而 ai 天然本文友好,这些知识库手到擒来

    朋友们,https://man7.org/linux/man-pages/man1/man.1.html 庞大的 man 文档世界
    每一条命令,每一个 libc 关键原语,都在这里详细的说明者,可以说从计算机体系诞生延续到现在,数代人的积累
    tf2
        51
    tf2  
       6h 39m ago
    powershell 算勉强能用。。

    cmd 那一坨你写都头痛。。
    richiewu
        52
    richiewu  
       6h 9m ago
    @PrinceofInj AI 又不需要见文生义,要的是一致性的训练数据,要的是输出也是标准输出流方便解析
    tianhehechu
        53
    tianhehechu  
       5h 57m ago
    @cloudzhou 看清我的原文了吗,命令好、图像操作演示,甚至官方文档示例,都拿 Mac 举例。
    cloudzhou
        54
    cloudzhou  
       5h 53m ago   ❤️ 1
    @tianhehechu 你有没有想过,如果开发者本身不是使用 Mac ,或者类 Unix 系统,列举的命令之类的,还真没有太多人,本来 Windows 开发的,然后还专门给你转成 Max/Unix 命令

    “然后在讲解操作命令的时候,只给出 Linux 命令;”
    我反驳的,就是你这一点,如果自己开发用 Windows ,大概率就会带上 Windows 的开发文档,包括命令
    nosay
        55
    nosay  
       5h 51m ago
    @tianhehechu #14 对对对,别人做个演示,还得特意买个 Mac 是吧?今日笑点被你承包了
    Hansah
        56
    Hansah  
       5h 44m ago
    我是用 win11+PS7 ,没遇到你们说的问题啊
    ShadowPower
        57
    ShadowPower  
       5h 31m ago
    倒不是 powershell 难用
    只是大模型训练数据里全是 bash
    我用 fish ,出问题的概率都比 bash 大
    xiangyuecn
        58
    xiangyuecn  
       5h 29m ago
    为什么不直接内置一个 python node java 还能固定环境版本 还能跨平台,随便用个都行啊,几十 G 都可以占用 还差这几十 M 吗🙂

    本身很多东西就得装 python 直接内置一个多好
    lanfeng579
        59
    lanfeng579  
       5h 20m ago
    @richiewu 所以楼主说的是反 AI ,但是不反人类
    Zenon
        60
    Zenon  
       5h 18m ago
    @tianhehechu #14 正经人谁用 Windows CLI 啊
    marcong95
        61
    marcong95  
       5h 9m ago
    Win 10 + PS 5.1 体感还好,遇到的主要还是 GBK 编码导致的问题
    v2exgo
        62
    v2exgo  
       4h 50m ago   ❤️ 1
    @tianhehechu #14 有没有一种可能,奇怪是你,而不是互联网上所有的教材
    v2exgo
        63
    v2exgo  
       4h 45m ago
    2026 年了,就别用 Windows 进行开发了。
    Ryanzlab
        64
    Ryanzlab  
       4h 38m ago
    为什么不装 powershell7 和 WSL2,你基本上不会遇到大战 powershell 的情况。。。
    kaf
        65
    kaf  
       4h 28m ago
    用 git 命令行不就好了
    SomeBottle
        66
    SomeBottle  
       4h 9m ago
    确实应该还是后训练中 powershell 的相关数据少了的缘故,对模型来说其 shell 母语更多是 Unix 系的,这也就会导致写 powershell 命令时出现转义出错、不知道其对变量名大小写敏感等问题,严重的时候会造成毁灭性的数据误删
    (一个 Codex 的真实案例就是 Agent 在一个脚本中用 $home 表示临时目录(因为临时目录名字里含有 home ),随后删除这个临时目录,$home 在此等同于只读的 $HOME ,powershell 不允许赋值,但不会阻止后续删除的执行,因此造成了严重的数据损失)。

    Windows 上开发的话尽量还是用 Git Bash 或者 WSL 吧。
    duolanengda
        67
    duolanengda  
       2h 47m ago
    我其实没搞懂,明明加几句 prompt 就能让 agent 使用 pwsh 能少出现不少问题,为什么 codex 和 claude 偏偏不这么做吗,是不是 openAI 和 Anthropic 的人自己也几乎不用 Windows
    jaylengao
        68
    jaylengao  
       2h 43m ago
    已经全部切到 Wsl 了,WezTerm+Herdr ,体感良好。
    rb6221
        69
    rb6221  
       2h 35m ago
    很多人都在说什么开发者都用 Linux/mac 云云,有没有想过,当 coding 需求增长见底的时候,你的用户人群已经开始有越来越多的办公领域小白,那你还不用 win 平台语料去加强训练,怪我是吧?那就别怪我用钱投票了
    visitantzj
        70
    visitantzj  
       2h 34m ago
    说反了,cmd/vbs 也好各种 shell 也好才是真反人类,长时间不用就记得一团浆糊;一直觉得 Powershell 这个命令体系设计得太天才了,以前没 AI 的时候经常靠命令行提示就能折腾个八九不离十,没错,就是纯靠猜能给你整出来。Bash 顺手纯粹是用得多习惯了,非说好那才叫斯德哥尔摩。
    Geon97
        71
    Geon97  
       2h 15m ago
    难用微软偏要设计出来反人类的东西,我直接就 git bash
    seenthewind
        72
    seenthewind  
       2h 14m ago
    不建议在 windows 上用 agent ,我在 mac 和 Linux ( ubuntu )上都部署过不同的 agent 。

    同样的事情,在 windows 上消耗 token 的速度是最快的,甚至很快就都达到 token 上限。(我用的频率不高,之前不怎么达到)

    我只能理解是国外大多的 agent 都不是在 windows 原生设计的,所以对 win 的支持差到离谱。
    sagnitude
        73
    sagnitude  
       2h 6m ago
    deepseek harness 会自动用 pwsh 用的挺好的,没怎么见报错
    cj941030
        74
    cj941030  
       2h 5m ago
    终于有人发这个贴了。再加上有些客户端,包括 codex 之前有版本有 bug ,错误的跑到 wsl 执行命令,本机环境乱的跟坨 x 一样,到处报错
    unused
        75
    unused  
       1h 46m ago
    CLI 在 *nix 是一等公民,在 Windows 上是二等
    netlous
        76
    netlous  
       1h 33m ago
    @tianhehechu 如果有人说人类是靠着头发排开空气产生浮力来走路,我根本无力争辩
    dingwen07
        77
    dingwen07  
       1h 20m ago
    PowerShell 现在只是缺训练数据,实际上这玩意可比 sh 、bash 和 zsh 都要适合 LLM
    PS 最大的问题是多行命令用的是 `
    missx
        78
    missx  
       1h 1m ago
    反正,我用 MiniMax code 什么的经常遇到命令报错
    jark006
        79
    jark006  
       28 mins ago
    我现在除了必须需要 Windows 的项目,其他一律在 Ubuntu/WSL 下开发。bash 和大模型亲和力太强了,一用 powershell 就打架,强如 opus/gpt 也偶尔犯错,万一哪天一个转义语法错误,删了重要文件就 GG 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5202 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 154ms · UTC 08:23 · PVG 16:23 · LAX 01:23 · JFK 04:23
    ♥ Do have faith in what you're doing.