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-Json 就不再支援較舊的 Draft 4 架構。 (#18141) (感謝 @gregsdennis!) JSON 架構的詳細資訊,請參閱 JSON 架構檔。
  • 現在的 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

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 的 OutFileInFile 参数 (#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!)
  • 將 PathLiteralPath 參數新增Test-Json Cmdlet (#19042) (感謝@ArmaanMcleod!)
  • NoHeader 參數新增至 ConvertTo-CsvExport-Csv Cmdlet (#19108) (感謝 @ArmaanMcleod!)
  • 將 ConfirmWhatIf 參數新增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-ObjectGet-Unique Cmdlet (#19683) (感謝 @ArmaanMcleod!)
  • Restart-ComputerStop-Computer 在 Unix 上未透過 sudo 執行時失敗 (#19824

引擎改善

更新 至$PSStyle

  • 新增 DimDimOff 属性 (#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 - 以可延伸的意見反應提供者取代硬式編碼的建議架構。
    • 此功能也會新增 FeedbackNameFeedbackTextFeedbackAction 屬性, $PSStyle.Formatting 讓您變更意見反應訊息的格式。
  • PSModuleAutoLoadSkipOfflineFiles - 模組探索現在會略過雲端提供者標示為未完全位於磁碟上的檔案。
  • PSCommandWithArgs - 將自變數傳遞至命令的支援新增為單一字串

下列實驗性功能成為主流:

PowerShell 7.4 已變更下列實驗性功能:

如需實驗性功能的詳細資訊,請參閱 使用實驗性功能