微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell 新版修复了 10 多年的 bug

最新消息,powershell,10多年的癌症被治好了!

问:癌症是指什么?

答:powershell一直有个特性,它的管道会传递对象,请看:'abc' | ForEach-Object {$_.toupper()} #返回ABC它管道传递的是【字符串对象】。它会把管道左面的【内容】强行对象化。这导致【二进制数据经管道传输】有问题。常见的问题场景是:管道下载图片损坏;压缩程序经管道传递损坏;二进制程序经管道import传递失败等。例:curl.exe https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png > a:pscodeTEMP_2023temp152b.png输出图片,和在网页上另存为的图片,大小不一致。内容也坏了。 

关于修复的版本:psv7.4-preview4

上述命令,我在psv7.4-preview4中亲自试验。下载的文件和我用网页另存的文件,完全相同。建议去官网,下载安装psv7.4-preview4:https://github.com/PowerShell/PowerShell/releases

问:和哪些管道相关?

答: 和【|】,【>】相关。

问:低于psv7.4-preview4的老版本,怎么解决这个癌症的?

答:低于psv7.4-preview4,没解决这个癌症。

缓解方法是:在powershell中用cmd /c,或bash -c。如:

cmd /c "curl.exe https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png > a:pscodeTEMP_2023temp152c.png"

关于10年:

https://github.com/PowerShell/PowerShell/issues/1908

上述问题提交于7年前,但何止7年。powershell没开源之前一直就有这个问题。甚至超过15年了!

相关链接

https://github.com/PowerShell/PowerShell/issues/1908

https://github.com/MicrosoftDocs/PowerShell-Docs/issues/10134

https://github.com/PowerShell/PowerShell/pull/17857

这证明了,没有做不到,只有想不到。爱.net人,你要多给powershell贡献啊。别总想着白嫖。

---谢谢观看,完---

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐