問:癌癥是指什么?
答:
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貢獻啊,別總想著白嫖,
---謝謝觀看,完---
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556425.html
標籤:其他
下一篇:返回列表
