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
至文稿區塊作為對等的begin
、process
和end
,以允許輕鬆清除資源 (#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!) - 將 參數新增
-ConfigurationFile
至pwsh
以允許使用檔案中.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!) - 新增
-StrictMode
至Invoke-Command
以允許在本機叫用命令時指定 strict 模式 (#16545) (感謝 @Thomas-Yu!) - 將 區塊新增
clean
至文稿區塊作為對等的begin
、process
和end
,以允許輕鬆清除資源 (#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
的對等begin
process
專案,以允許輕鬆清除資源。PSAMSIMethodInvocationLogging
- 延伸傳送至 AMSI 的數據以進行檢查,以包含 .NET 方法成員的所有調用。PSNativeCommandArgumentPassing - PowerShell 現在會使用 StartProcessInfo 物件的 ArgumentList 屬性,而不是叫用原生可執行檔時重建字元串的舊機制。
PowerShell 7.3.1 會在 Windows 中新增
sqlcmd.exe
使用Legacy
自變數傳遞樣式的原生命令清單。PSExec
- 新增新的Switch-Process
Cmdlet (aliasexec
) 以提供exec
非 Windows 系統的相容性。PowerShell 7.3.1 已將
exec
別名變更為包裝 的Switch-Process
函式。 函式可讓您將參數傳遞至可能錯誤地系結至WithCommand 參數的原生命令。
PowerShell 7.3 引進下列實驗性功能:
- PSNativeCommandErrorActionPreference - 新增
$PSNativeCommandUseErrorActionPreference
變數,讓原生命令所產生的錯誤成為 PowerShell 錯誤。
PowerShell 7.3 已移除下列實驗性功能:
PSNativePSPathResolution
不再支持實驗性功能。PSStrictModeAssignment
不再支持實驗性功能。
如需實驗性功能的詳細資訊,請參閱 使用實驗性功能。