PowerShell 7.4 的新功能
PowerShell 7.4 包含下列功能、更新和重大變更。 PowerShell 7.4 建置在 .NET 8.0.0 上。
如需變更的完整清單,請參閱 GitHub 存放庫中的 CHANGELOG 。
重大變更
- 此版本無法使用 Nano 伺服器 Docker 映像
- 已將 ProgressAction 參數新增至 Common Parameters
- 更新某些 PowerShell API 以在自變數是空字串時擲回 ArgumentException 而不是 ArgumentNullException (#19215) (感謝@xtqqczze!)
- 移除與
#requires -pssnapin
相關的程式代碼 (#19320) Test-Json
現在會使用 JsonSchema.NET,而不是 Newtonsoft.Json.Schema。- 現在的
Test-Connection
輸出包含 TCP 連線測試的詳細資訊 - .NET 引進了受影響的
Test-Connection
變更。 Cmdlet 現在會傳回使用自定義緩衝區大小時,Linux 平臺上需要使用sudo
的錯誤 (#20369) - 實驗性功能 PSNativeCommandPreserveBytePipe 現在是主流功能。 PowerShell 現在會將原生命令的 stdout 數據流重新導向至檔案,或將位元組數據流數據傳送至原生命令的 stdin 數據流時,保留位元組數據流數據。
- 變更使用 RelativeBasePath 參數時如何處理 中的
Resolve-Path
相對路徑 (#19755) (感謝@MartinGC94!) - 移除未使用的 PSv2 程式代碼 - 移除 TabExpansion 函式 (#18337)
安裝程式更新
Windows MSI 套件現在提供在安裝期間停用 PowerShell 遙測的選項。 如需詳細資訊,請參閱 從命令行安裝 msi 套件。
已更新的 PSResourceGet 和 PSReadLine 版本
PowerShell 7.4 包含 Microsoft.PowerShell.PSResourceGet v1.0.1。 此模組會與 PowerShellGet v2.2.5 和 PackageManagement v1.4.8.1 並存安裝。 如需詳細資訊,請參閱 Microsoft.PowerShell.PSResourceGet 的檔。
PowerShell 7.4 現在包含 PSReadLine v2.3.4。 如需詳細資訊,請參閱 PSReadLine 的檔。
Tab 鍵自動完成改善
許多人感謝 @MartinGC94 和其他人的所有工作,以改善 Tab 鍵完成。
- 修正使用空陣列表示式在腳稿中完成第一個命令時的問題 (#18355)
- 修正位置自變數完成 (#17796)
- 完成位置自變數時設定預設參數的優先順序 (#18755)
- 改善動態參數的虛擬系結 (#18030)
- 改善哈希表索引鍵的類型推斷 (#17907)
- 修正空傳回語句的類型推斷錯誤 (#18351)
- 改善 Get-Random 的類型推斷 (#18972)
- 修正所有範圍變數的類型推斷 (#18758)
- 改善管線中推斷型別的列舉 (#17799)
- 比較列舉時新增比較值的完成 (#17654)
- 新增列舉的屬性指派完成 (#19178)
- 修正 PSCustomObject 變數屬性的完成 #18682)
- 修正屬性自變數中的成員完成 (#17902)
- 排除完成結果中的備援參數別名 (#19382)
- 修正具有基底類型之類別的類別成員完成 #19179
- 新增 Using 關鍵詞的完成 (#16514)
- 修正完成變數時 TabExpansion2 變數流失問題 (#18763)
- 啟用跨 ScriptBlock 範圍完成變數 (#19819)
- 修正 foreach 語句變數的完成 (#19814)
- 修正變數類型推斷優先順序 (#18691)
- 修正 PowerShell 列舉類別的成員完成 (#19740)
- 修正方法呼叫中索引表示式中的陣列常值剖析 (#19224)
- 改善路徑完成 (#19489)
- 修正 CompleteInput 中空白腳本輸入的系結錯誤索引編制 (#19501)
- 改善變數完成效能 (#19595)
- 改善類型限制變數指派、巢狀哈希表等等的哈希表索引鍵完成 (#17660)
- 將外部應用程式輸出推斷為字串 (#19193)
- 更新列舉的參數完成,以排除屬性 (#17750) 不允許
ValidateRange
的值 (感謝 @fflaten!)。 - 修正動態參數完成 (#19510)
- 為 Data 語句指派的變數新增完成作業 (#19831)
- 修正在 Windows 系統上擴充Tilde (
~
) 以避免$home
使用原生命令中斷使用案例 (#21529)
Web Cmdlet 改善
許多人感謝 @CarloToso 和其他人所有改善 Web Cmdlet 的工作。
- 修正 Web Cmdlet 中的解壓縮,以包含 Brotli (#17955) (感謝@iSazonov!)
- Webcmdlet 新增 308 以重新導向程式代碼和小型清除 (#18536)
- 完成下載或取消時 Invoke-WebRequest 中的進度列轉譯 (#18130)
- 如果狀態代碼為 429,Web Cmdlet 會從響應標頭取得 Retry-After 間隔(#18717)
- Web Cmdlet 會將預設字元集編碼設定為 UTF8 (#18219)
- 保留變更的 WebSession.MaximumRedirection (#19190)
- 如果存在,WebCmdlet 會剖析 XML 宣告以取得編碼值。 (#18748)
- 修正在沒有編碼的情況下使用 webcmdlet 中的 xml -Body (#19281)
- 將 PUT 方法行為調整為 WebCmdlet 中預設內容類型的 POST 方法行為 (#19152)
- 將 WebCmdlet 中標頭的 ContentType 納入考慮 (#19227)
- 允許藉由將 -PreserveHttpMethodOnRedirect 新增至 Web Cmdlet 來保留原始 HTTP 方法 (#18894)
- Webcmdlet 會顯示 HTTPs 到 HTTP 重新導向的錯誤 (#18595)
- 將 AllowInsecureRedirect 參數新增至 Web Cmdlet (#18546)
- 當內容長度未知時,改善 Web Cmdlet 中的詳細資訊訊息 (#19252)
- 在 中建置回應
Invoke-WebRequest
中連結的相對 URI (#19092) - 修正 WebCmdlet 中的重新
-CustomMethod POST
導向 (#19111) - 處置 Webcmdlet 中的先前回應 (#19117)
- 改善
Invoke-WebRequest
xml 和 json 錯誤格式 (#18837) - 將 ValidateNotNullOrEmpty 新增至 WebCmdlets 的 OutFile 和 InFile 参数 (#19044)
- HttpKnownHeaderNames 更新標頭清單 (#18947)
Invoke-RestMethod -FollowRelLink
修正包含逗號的連結 (#18829)- 修正在 Web Cmdlet 中管理重新導向和 KeepAuthorization 的錯誤 (#18902)
- 將 StatusCode 新增至 HttpResponseException (#18842)
- 支援 Web Cmdlet 中的 HTTP 持續性連線 (#19249) (感謝 @stevenebutler!)
- 小型清理
Invoke-RestMethod
(#19490) - 改善 WebCmdlet 的詳細資訊訊息以顯示正確的 HTTP 版本 (#19616)
- 將 FileNameStar 新增至 WebCmdlet 中的 MultipartFileContent (#19467)
- 修正 WebCmdlet 從 409 到 429 的 HTTP 狀態,以從 Retry-After 標頭取得重試間隔。 (#19622) (感謝@mkht!)
- 變更
-TimeoutSec
並-ConnectionTimeoutSeconds
新增-OperationTimeoutSeconds
至 Web Cmdlet (#19558) (感謝 @stevenebutler!) 其他 Cmdlet - 在 WebCmdlet 中讀取資料時連線停止回應時支援 Ctrl+c (#19330) (感謝 @stevenebutler!)
- 支援 WebCmdlet 中的 Unix 網域套接字 (#19343)
其他 Cmdlet 改善
Test-Connection
現在會傳回使用自訂緩衝區大小時需要在 Linux 平臺上使用sudo
的錯誤 (#20369)- 將輸出類型新增至 Format 命令 (#18746) (感謝 @MartinGC94!)
- 新增 (#17948) 的
Get-WinEvent
輸出類型屬性 (感謝@MartinGC94!) - 將 Path 和 LiteralPath 參數新增至
Test-Json
Cmdlet (#19042) (感謝@ArmaanMcleod!) - 將 NoHeader 參數新增至
ConvertTo-Csv
和Export-Csv
Cmdlet (#19108) (感謝 @ArmaanMcleod!) - 將 Confirm 和 WhatIf 參數新增至
Stop-Transcript
(#18731) (感謝@JohnLBevan!) - 將 FuzzyMinimumDistance 參數新增至
Get-Command
(#18261) - 讓 Encoding 參數能夠在 PowerShell 中採用
ANSI
編碼 (#19298) (感謝 @CarloToso!) - 將進度新增至
Copy-Item
(#18735) Update-Help
現在會在非美國系統上使用隱含文化特性時回報錯誤。 (#17780) (感謝@dkaszews!)- 建立已完成進度記錄時不需要活動 (#18474) (感謝 @MartinGC94!)
- 不允許 Cmdlet 參數的
Get-Content
負值和-Tail
(#19715) (感謝-Head
@CarloToso!) - 當目前的文化特性與語言 (#19765) 相關聯時,請
Update-Help
擲回適當的錯誤 (感謝@josea!) - 允許在
-Skip
Cmdlet 中Select-Object
結合 和-SkipLast
參數。 (#18849) (感謝@ArmaanMcleod!) - 新增
Get-SecureRandom
Cmdlet (#19587) Set-Clipboard -AsOSC52
用於遠端使用 (#18222) (感謝 @dkaszews!)- 加快
Resolve-Path
相對路徑解析 (#19171) (感謝 @MartinGC94!) - 已將 switch 參數
-CaseInsensitive
新增至Select-Object
和Get-Unique
Cmdlet (#19683) (感謝 @ArmaanMcleod!) Restart-Computer
和Stop-Computer
在 Unix 上未透過 sudo 執行時失敗 (#19824)
引擎改善
更新至 $PSStyle
- 新增 Dim 和 DimOff 属性 (#18653)
- 已將靜態方法新增至 PSStyle 類別,將前景和背景 ConsoleColor 值對應至 ANSI 逸出序列 (#17938)
- 匯出欄位的數據表標頭預設會以斜體格式化
- 在遠端主機上新增尊重
$PSStyle.OutputRendering
的支援 (#19601) - 已更新遙測資料以包含模組的使用
CrescendoBuilt
(#20371)
其他引擎更新
- 宣告屬性時
NoRunspaceAffinity
,讓 PowerShell 類別與 Runspace 無關 (#18138) ValidateNotNullOrWhiteSpace
新增 屬性 (#17191) (感謝@wmentha!)- 新增
sqlcmd
至傳遞舊版自變數的清單 (#18559) - 新增函式
cd~
(#18308) (感謝 @GigaScratch!) - 修正泛型類型中的數位類型剖析 (#19205) (感謝 @MartinGC94!)
- 修正裝置路徑根目錄中的通配符通配符通配符 (#19442) (感謝 @MartinGC94!)
- 新增公用 API 以取得 PSModulePath 元素的位置 (#19422)
- 修正不正確的字串到類型轉換 (#19560) (感謝 @MartinGC94!)
- 修正使用許多斷點時執行緩慢的問題 (#14953) (感謝 @nohwnd!)
- 移除與
#requires -pssnapin
相關的程式代碼 (#19320)
實驗性功能
PowerShell 7.4 引進下列實驗性功能:
- PSFeedbackProvider - 以可延伸的意見反應提供者取代硬式編碼的建議架構。
- 此功能也會新增 FeedbackName、 FeedbackText和 FeedbackAction 屬性,
$PSStyle.Formatting
讓您變更意見反應訊息的格式。
- 此功能也會新增 FeedbackName、 FeedbackText和 FeedbackAction 屬性,
- PSModuleAutoLoadSkipOfflineFiles - 模組探索現在會略過雲端提供者標示為未完全位於磁碟上的檔案。
- PSCommandWithArgs - 將自變數傳遞至命令的支援新增為單一字串
下列實驗性功能成為主流:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 已變更下列實驗性功能:
- PSCommandNotFoundSuggestion - 此功能現在使用可延伸的意見反應提供者,而不是硬式編碼的建議 (#18726)
如需實驗性功能的詳細資訊,請參閱 使用實驗性功能。