PowerShell 7.3 的新功能

PowerShell 7.3 是建置在 .NET 7.0 上的下一個穩定版本。

PowerShell 7.3 包含下列功能、更新和重大變更。

重大變更和改善

  • 在此版本中,已更新或移除 Windows API 以符合規範,這表示 PowerShell 7.3 不會在 Windows 7 上執行。 雖然不再支援 Windows 7,但先前的組建可以在 Windows 7 上執行。
  • 只有 Windows 10 版本 1809 和更新版本才支援 Hyper-V 的 PowerShell Direct。
  • Test-Connection 因為 .NET 7 中刻意 的中斷性變更 而中斷。 其追蹤方式為 #17018
  • 將 區塊新增 clean 至文稿區塊作為對等的 beginprocessend ,以允許輕鬆清除資源 (#15177
  • 將 的預設值 $PSStyle.OutputRendering 變更為 [主機]
  • Out-String 字串 Out-File 輸入保持不變 (#17455
  • 將 System.Security.AccessControl.ObjectSecurity 的類型數據定義移至 Microsoft.PowerShell.Security 模組 (#16355) (感謝@iSazonov!)
    • 在這項變更之前,使用者不需要明確地匯入 Microsoft.PowerShell.Security 模組,才能使用針對 System.Security.AccessControl.ObjectSecurity 實例定義的程式代碼屬性。
    • 在這項變更之後,用戶必須明確地匯 入 Microsoft.PowerShell.Security 模組,才能使用這些程式代碼屬性和程式碼方法。

Tab 鍵自動完成改善

  • PowerShell 7.3 包含 PSReadline 2.2.6,預設會啟用預測性 IntelliSense。 如需詳細資訊,請參閱 about_PSReadLine
  • 修正為 ValidateScriptAttribute指定的文本區塊內的索引標籤自動完成。 (#14550) (感謝@MartinGC94!)
  • 在 之後新增迴圈標籤的索引標籤完成索引標籤 break/continue#16438) (感謝 @MartinGC94!)
  • 改善多個案例中的哈希表完成 (#16498) (感謝 @MartinGC94!)
    • 參數展開
    • 的自變數參數Invoke-CimMethod
    • FilterHashtable 參數 Get-WinEvent
    • CIM Cmdlet 的屬性參數
    • 從成員完成案例中移除重複專案
  • 支援網路共用中的斜線 (UNC 路徑) 完成 (#17111) (感謝@sba923!)
  • 改善成員自動完成 (#16504) (感謝 @MartinGC94!)
  • 設定 ValidateSet 完成的優先順序超過參數列舉的列舉 (#15257) (感謝 @MartinGC94!)
  • 使用類型參數新增泛型方法的類型推斷支援 (#16951) (感謝 @MartinGC94!)
  • 改善類型推斷和完成 (#16963) (感謝 @MartinGC94!)
    • 允許在完成結果中顯示方法 ForEach-Object -MemberName
    • 防止在傳回 void 的運算式上完成,例如 ([void](""))
    • 允許非預設類別建構函式在類別完成以 AST 為基礎時顯示
  • 改善 (#17716) 的類型推斷 $_感謝@MartinGC94!)
  • 修正 ICollection 的類型推斷 #17752) (感謝@MartinGC94!)
  • 防止在完成變數時移除大括弧 (#17751) (感謝 @MartinGC94!)
  • 新增字典索引表達式的完成 (#17619) (感謝 @MartinGC94!)
  • 修正屬性令牌的類型完成 (#17484) (感謝 @MartinGC94!)
  • 改善動態參數索引標籤自動完成 (#17661) (感謝 @MartinGC94!)
  • 避免在值前面完成參數時係結位置參數 (#17693) (感謝 @MartinGC94!)

改善的錯誤處理

  • $?使用重新導向正確設定命令表示式 (#16046
  • 修正使用 $PSNativeCommandUseErrorActionPreference 時的轉換錯誤 (#15993
  • 選擇性地處理 ErrorActionPreference 原生命令錯誤 (#15897
  • 針對非零結束碼 ErrorRecord 指定可執行文件路徑 TargetObject (#16108) (感謝@rkeithhill!)

會話和遠端改善

  • 新增 -Options 至透過 SSH 命令的 PSRP,以允許直接傳遞 OpenSSH 選項 (#12802) (感謝 @BrannenGH!)
  • 將 參數新增 -ConfigurationFilepwsh 以允許使用檔案中 .pssc 定義的工作階段組態啟動新進程 (#17447
  • 新增在非 Windows 平臺上使用 New-PSSessionConfigurationFile 的支援 (#17447

更新的 Cmdlet

  • 將參數新增 -HttpVersion 至 Web Cmdlet (#15853) (感謝 @hayhay27!)
  • 為開放式輸入標記新增對 Web Cmdlet 的支援 (#16193) (感謝 @farmerau!)
  • 修正 ConvertTo-Json -Depth 以允許最多 100 個 (#16197) (感謝 @KevRitchie!)@rkeithhill!)
  • 使用表達式呼叫 Invoke-Command$using: 時改善變數處理 (#16113) (感謝 @dwtaber!)
  • 新增 -StrictModeInvoke-Command 以允許在本機叫用命令時指定 strict 模式 (#16545) (感謝 @Thomas-Yu!)
  • 將 區塊新增 clean 至文稿區塊作為對等的 beginprocessend ,以允許輕鬆清除資源 (#15177
  • 新增 -Amended 切換至 Get-CimClass Cmdlet (#17477) (感謝 @iSazonov)
  • 已變更 ConvertFrom-Json -AsHashtable 為使用已排序哈希表 (#17405
  • 在傳送至 Out-GridView 之前,移除字串中的 ANSI 逸出序列 (#17664
  • 已將 毫秒 參數新增至 New-TimeSpan#17621) (感謝 @NoMoreFood!)
  • 顯示方法定義和多載時顯示選擇性參數 (#13799) (感謝 @eugenesmlv!)
  • 即使目前的工作目錄已不存在,仍允許執行命令 (#17579
  • 新增對 Set-AuthenticodeSignature -TimeStampServer HTTPS 的支援 (#16134) (感謝 @Ryan-Hutchison-USAF!)
  • 使用目前文化特性轉譯數據表中的十進位數 (#17650
  • 新增排序為 OrderedDictionary 的類型加速器 (#17804) (感謝 @fflaten!)
  • 新增 find.exe 至 Windows 的舊版自變數系結行為 (#17715
  • 新增 -noprofileloadtime 切換至 pwsh (#17535) (感謝 @rkeithhill!)

如需變更的完整清單,請參閱 GitHub 存放庫中的變更記錄 檔。

實驗性功能

在 PowerShell 7.3 中,下列實驗性功能成為主流:

  • PSAnsiRenderingFileInfo - 此功能會 $PSStyle.FileInfo 新增成員,並啟用特定文件類型的著色。

  • PSCleanBlock- 將 區塊新增clean至腳本區塊,做為 、 和 end 的對等beginprocess專案,以允許輕鬆清除資源。

  • PSAMSIMethodInvocationLogging - 延伸傳送至 AMSI 的數據以進行檢查,以包含 .NET 方法成員的所有調用。

  • PSNativeCommandArgumentPassing - PowerShell 現在會使用 StartProcessInfo 物件的 ArgumentList 屬性,而不是叫用原生可執行檔時重建字元串的舊機制。

    PowerShell 7.3.1 會在 Windows 中新增 sqlcmd.exe 使用 Legacy 自變數傳遞樣式的原生命令清單。

  • PSExec - 新增新的 Switch-Process Cmdlet (alias exec) 以提供 exec 非 Windows 系統的相容性。

    PowerShell 7.3.1 已將 exec 別名變更為包裝 的 Switch-Process函式。 函式可讓您將參數傳遞至可能錯誤地系結至WithCommand 參數的原生命令。

PowerShell 7.3 引進下列實驗性功能:

PowerShell 7.3 已移除下列實驗性功能:

  • PSNativePSPathResolution 不再支持實驗性功能。
  • PSStrictModeAssignment 不再支持實驗性功能。

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