PowerShell 新版修复了 10 多年的 bug


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


问:癌症是指什么?

答:
powershell一直有个特性,它的管道会传递对象,请看:
'abc' | ForEach-Object {$_.toupper()} #返回ABC
它管道传递的是【字符串对象】。它会把管道左面的【内容】强行对象化。这导致【二进制数据经管道传输】有问题。
常见的问题场景是:管道下载图片损坏;压缩程序经管道传递损坏;二进制程序经管道import传递失败等。
例:
curl.exe https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png > a:\pscode\TEMP_2023\temp152\b.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:\pscode\TEMP_2023\temp152\c.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贡献啊。别总想着白嫖。

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


相關推薦

2021-11-11

11 月 9日,微软 Powershell 团队宣布:最新版本的 PowerShell Preview 扩展已在 Visual Studio Code 商店上发布,此次更新对 PowerShell 编辑器的核心: PowerShell 引擎进行彻底的改革,创造更可靠和稳定的用户体验。 以前,集成控制台(

2022-08-06

特选应用程序集。安装后,用户可以通过 Windows Terminal、PowerShell 或 CMD 访问 winget。 下图为 winget 通过 PowerShell 在 Windows Terminal 中运行的截图。点此查阅详细使用文档。 新版本带来了更好的包版本报告、新设置允许默

2023-07-10

etcd不同登录方式,对powershell版本的需求: 系统需求 不依赖任何第三方dll库。 支持win版powershell。 支持linux版powershell。 ------------------------------------------------------------------- 无账户密码。内网,低安全可以采用此

2022-07-06

hp] 修复 PHP 客户端中的 @implements 注释 #11908 PowerShell [PowerShell] 支持枚举整数 #12752 Python 修复 python-experimental 中的双重序列化错误 #12561 为 v3.0.3 单元测试规范添加示例客户端,包括自动生成的模型

2022-07-07

。 clearAllMarks:清除文本缓冲区中的所有滚动标记。 PowerShell “黑条”补丁删除 此版本删除了 Windows Terminal 防止 PowerShell 运行时出现意外黑色背景(可能表现为横跨屏幕的黑条)的补丁。选择删除此补丁,是因为较新版本的

2022-10-04

rjob.official.processors.impl.ConfigProcessor 新改动:支持 CMD 和 PowerShell 脚本处理器 详情查看:https://gitee.com/KFCFans/PowerJob/releases/v4.2.0

2023-03-17

PowerShell 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以很好地与你现有的工具配合,并为处理结构化数据(如 JSON、CSV、XML 等)、REST API 和对象模型而优化。它包括一个命令行 Shell、一种相关的脚本语言

2022-07-21

PowerShell Core 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以很好地与你现有的工具配合,并为处理结构化数据(如 JSON、CSV、XML 等)、REST API 和对象模型而优化。它包括一个命令行 Shell、一种相关的脚本语

2022-08-15

PowerShell Core 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以很好地与你现有的工具配合,并为处理结构化数据(如 JSON、CSV、XML 等)、REST API 和对象模型而优化。它包括一个命令行 Shell、一种相关的脚本语

2023-04-18

Linux 6.3 收到了一个 Linux CPU 调度程序修复补丁,修复了自 2019 年底以来一直存在于主线内核中的“ CFS 调度器计算不平衡导致的整数溢出” 问题。 该问题最先在英特尔至强可扩展 Sapphire Rapids 服务器上发现,自 2019 年 10 月

2024-01-16

PowerShell 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具 / 框架,可以很好地与你现有的工具配合,并为处理结构化数据(如 JSON、CSV、XML 等)、REST API 和对象模型而优化。它包括一个命令行 Shell、一种相关的脚本语言

2022-06-30

PowerShell Core 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以很好地与你现有的工具配合,并为处理结构化数据(如 JSON、CSV、XML 等)、REST API 和对象模型而优化。它包括一个命令行 Shell、一种相关的脚本语

2022-11-11

PowerShell 7.3 已正式发布,PowerShell 7.3 构建在 .NET 7 之上,作为非 LTS版本支持 18 个月。PowerShell 7.2 仍然是 PowerShell 的 LTS(支持 3 年)版本。 PowerShell 7.3 的主题仍是成为一个出色的 shell 环境,主要带来如下优化(以下的“本机命

2022-05-21

PowerShell Core 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具 / 框架,可以很好地与你现有的工具配合,并为处理结构化数据(如 JSON、CSV、XML 等)、REST API 和对象模型而优化。它包括一个命令行 Shell、一种相关的脚本