共用方式為


PowerShell 7.4 的新功能

PowerShell 7.4.7 包含下列功能、更新和重大變更。 PowerShell 7.4.7 建置在 .NET 8.0.12 上。

如需變更的完整清單,請參閱 GitHub 存放庫中的 CHANGELOG

重大變更

  • 此版本的 Nano Server 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 架構 檔。 這也會導致帶有註解的 JSON 和 JSONC 檔案遇到 Test-Json 問題。
    • ConvertFrom-Json 支援仍然使用 Newtonsoft.Json.Schema,因此可以使用批注轉換 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
  • 新增「使用關鍵詞」的自動完成功能(#16514
  • 當完成變數時,修正 TabExpansion2 的變數洩露問題 (#18763
  • 啟用在 ScriptBlock 範圍中完成變數(#19819
  • 修正 foreach 語句變數的完成 (#19814
  • 修正變數類型推斷優先順序 (#18691
  • 修正 PowerShell 列舉類別的成員自動完成(#19740
  • 修正方法呼叫中索引表達式中的陣列字面值解析 (#19224
  • 改進完成路徑(#19489
  • 修正 CompleteInput 中因空的腳本輸入導致的索引超出範圍錯誤 (#19501
  • 改善變數完成效能 (#19595
  • 改進雜湊表的鍵完成功能,包括類型約束的變數指定和巢狀雜湊表等(#17660
  • 將外部應用程式輸出推斷為字串 (#19193
  • 更新列舉的參數自動完成功能,以排除 ValidateRange 屬性不允許的值(#17750),感謝 @fflaten!)的貢獻。
  • 修正完成動態參數(#19510
  • 為 Data 語句指派的變數新增完成 (#19831
  • 修正在 Windows 系統上的擴展波浪號(~)到 $home,以防止原生命令的使用案例中斷(#21529

Web Cmdlet 的改善

非常感謝 @CarloToso 以及其他人為改進網頁小命令所做的所有工作。

  • 修正網頁 Cmdlet 中的解壓縮功能,以包含 Brotli(#17955)(感謝 @iSazonov!))
  • Webcmdlet 新增 308 以重新導向狀態碼和小幅調整(#18536
  • 完成或取消下載時,請在 Invoke-WebRequest 顯示進度列 (#18130)。
  • 如果狀態代碼為 429(#18717),Web cmdlet 會從響應標頭取得 Retry-After 間隔。
  • Web Cmdlet 會將預設字元集編碼設定為 UTF8 (#18219
  • 防止更改 WebSession.MaximumRedirection (#19190
  • 如果存在,WebCmdlet 會剖析 XML 宣告以取得編碼值。 (#18748
  • 修正 webcmdlet 中使用 XML 而沒有指定編碼方式的問題 -Body(#19281
  • 調整 WebCmdlets 中預設內容類型的 PUT 方法行為,使其與 POST 方法行為一致(#19152
  • 考慮 WebCmdlets 內標頭中的 ContentType (#19227
  • 允許將 -PreserveHttpMethodOnRedirect 新增至 Web Cmdlet 來保留原始 HTTP 方法(#18894
  • Webcmdlets 會顯示 HTTPS 到 HTTP 重新導向的錯誤 (#18595
  • 新增 AllowInsecureRedirect 切換至 Web Cmdlet (#18546
  • 當內容長度未知時,改善 Web Cmdlet 中的詳細訊息(#19252
  • Invoke-WebRequest 中建置回應連結的相對 URI (#19092
  • 修正 WebCmdlet 中 -CustomMethod POST 的重新導向 (#19111
  • 清理 Webcmdlet 中的先前回應 (#19117
  • 改善 xml 和 json 錯誤格式 Invoke-WebRequest#18837
  • 將 ValidateNotNullOrEmpty 新增至 WebCmdlets 的 OutFileInFile 參數(#19044)。
  • HttpKnownHeaderNames 更新標頭列表 (#18947
  • Invoke-RestMethod -FollowRelLink 修正包含逗號的連結 (#18829
  • 修正在 Web Cmdlet 中管理重新導向和 KeepAuthorization 的 Bug (#18902
  • StatusCode 新增至 HttpResponseException#18842
  • 支援 Web Cmdlet 中的 HTTP 持續性連線 (#19249) (感謝 @stevenebutler!)
  • 小清理 Invoke-RestMethod#19490
  • 改善 WebCmdlets 的詳細訊息,使其顯示正確的 HTTP 版本(#19616
  • 在 WebCmdlets 中將 FileNameStar 新增至 MultipartFileContent#19467
  • 修正 WebCmdlets 的 HTTP 狀態從 409 到 429,以便從 Retry-After 標頭獲取重試間隔。 (#19622)(感謝 @mkht!)
  • -TimeoutSec 變更為 -ConnectionTimeoutSeconds,並將 -OperationTimeoutSeconds 新增至 Web 指令 (#19558) (感謝 @stevenebutler!) 其他指令)
  • 在 WebCmdlet 中讀取資料時,如果連線中斷,支援使用 Ctrl+c (#19330) (感謝 @stevenebutler!)
  • 支援 WebCmdlet 中的 Unix 網域套接字 (#19343

其他 Cmdlet 改進

  • Test-Connection 現在會傳回一個錯誤,指出在使用自定義緩衝區大小時,需要在 Linux 平台上使用 sudo#20369
  • 將輸出類型新增至 Format 命令 (#18746) (感謝 @MartinGC94!)
  • 新增 Get-WinEvent 的輸出類型屬性 (#17948) (感謝 @MartinGC94!)
  • PathLiteralPath 參數新增至 Test-Json Cmdlet (#19042) (感謝 @ArmaanMcleod!)
  • NoHeader 參數新增至 ConvertTo-CsvExport-Csv Cmdlet (#19108) (感謝 @ArmaanMcleod!)
  • 確認WhatIf 參數新增至 Stop-Transcript#18731)(感謝 @JohnLBevan!))
  • FuzzyMinimumDistance 参數新增至 Get-Command#18261
  • 編碼 參數能夠在 PowerShell 中採用 ANSI 編碼 (#19298) (感謝 @CarloToso!)
  • 將進度新增至 Copy-Item#18735
  • Update-Help 現在會在非美國系統上使用隱含文化特性時回報錯誤。 (#17780)(感謝 @dkaszews!)
  • 在建立完成進度記錄時,不需要要求活動 (#18474) (感謝 @MartinGC94!))
  • 不允許 Get-Content Cmdlet 參數 -Head-Tail 的負值(#19715)(感謝 @CarloToso!))。
  • 當目前的文化特性與語言無關時,請 Update-Help 擲回適當的錯誤(#19765) (感謝 @josea!)
  • 允許在 Select-Object Cmdlet 中結合 -Skip-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 已變更下列實驗性功能:

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