这不是现在的问题,以前的分析
https://www.v2ex.com/t/743334#r_10060656 仍然适用。
长话短说:只会习惯 Windows 体系的运维或许有用。
别的地方用没用另说,但有时候显然不如不用。
就不适合开发人员写脚本,再补个以前遇到的案例:
https://github.com/flutter/flutter/issues/12666#issuecomment-636497901很显然 PowerShell 脚本的作者没考虑到一些日常应该考虑到的简单情况,结果让行为变得极其愚蠢。
这不是说 bug 就是 PowerShell 特供的,但事实上这个功能在对应的 UNIX shell 脚本里就没问题。这间接体现出保证 PowerShell 脚本质量大约比 UNIX shell 更困难,即便后者坑已经够多了。
况且要求装个 pwsh 只是勉强算简便,实际装的东西比起 MSYS 之类也并不轻便(
还是隐含.NET 依赖的情况),还不提 MSYS 普遍比 pwsh 甚至系统自带的 PowerShell 的可用性都好。(现在 Windows 都自带 curl ,写个一行安装 MSYS2 的也不是不行,PowerShell 这时候比 cmd 方便的地方就更像当年 Edge“用来下载别的浏览器的浏览器”了。) Windows 开发者的确也有不少和 LZ 现在这样想的更熟悉类 UNIX shell 懒得碰 PowerShell 来偷懒的,
特别是不愿意依赖.NET 这种精神 COM 包袱的纯粹本机开发者和跨平台开发者。所以说即便照顾 Windows 用户,PowerShell 这个选项也基本是多余的。
这也再次显示出 PowerShell 提供的不同的 shell 特性并不能有效地防止一些编程错误,需要正经的脚本程序不如用健全一点的常规“脚本语言”。