共用方式為


PowerShell 7.0 新增了什麼

PowerShell 7.0 是一個開源、跨平台(Windows、macOS 和 Linux)的 PowerShell 版本,旨在管理異質環境與混合雲。

在本版本中,我們引入多項新功能,包括:

  • 管線平行化 ForEach-Object -Parallel
  • 新幹員:
    • 三元運算子: a ? b : c
    • 管線鏈運算子: || 以及 &&
    • 零條件運算子: ?? 以及 ??=
  • 一個簡化且動態的錯誤視圖與 Get-Error cmdlet,方便調查錯誤
  • 一個相容層,允許使用者在隱含的 Windows PowerShell 會話中匯入模組
  • 自動新版本通知
  • 直接從 PowerShell 7(實驗階段)調用 DSC 資源的能力

想查看完整的功能和修正清單,請參閱 變更日誌

我在哪裡可以安裝 PowerShell?

PowerShell 7 目前支援以下作業系統,包括:

  • Windows 8.1 與 10
  • Windows Server 2012、2012 R2、2016 與 2019
  • macOS 10.13+
  • 紅帽企業Linux(RHEL)/CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04+
  • Alpine Linux 3.8+

此外,PowerShell 7.0 支援 Debian、Ubuntu 及 ARM64 的 ARM32 與 ARM64 版本 Alpine Linux。

請參考你偏好的作業系統 WindowsmacOSLinux 的安裝說明。

雖然沒有官方支援,但社群也提供了 Arch 和 Kali Linux 的套件。

備註

Debian 10 和 CentOS 8 目前不支援 WinRM 遠端支援。 關於如何設定基於 SSH 的遠端處理,請參見 PowerShell Remoting over SSH

欲了解更多 up-to的支援作業系統及支援生命週期資訊,請參閱 PowerShell 支援生命週期

執行 PowerShell 7

PowerShell 7 會安裝到與 Windows PowerShell 分開的目錄。 這讓你能同時執行 PowerShell 7 與 Windows PowerShell 5.1。 PowerShell 6.x 則是原地升級,移除了 PowerShell 6.x。

  • PowerShell 7 已安裝於 %programfiles%\PowerShell\7
  • 資料夾 %programfiles%\PowerShell\7 已新增至 $env:PATH

PowerShell 7 安裝套件會升級先前版本的 PowerShell 6.x:

  • Windows 上的 PowerShell 6.x: %programfiles%\PowerShell\6 被 取代為 %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 被 取代 /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 被 取代為 /usr/local/microsoft/powershell/7

備註

在 Windows PowerShell 中,啟動 PowerShell 的執行檔命名 powershell.exe為 。 在版本 6 及以上版本中,執行檔名稱改為支援並排執行。 啟動 PowerShell 7 的新執行檔名稱是 pwsh.exe。 預覽版本會保留 pwsh-preview 在原位,而非 pwsh 7-preview 目錄下。

提升與 Windows PowerShell 的向下相容性

PowerShell 7.0 標誌著 .NET Core 3.1 的升級,讓它能大幅提升與現有 Windows PowerShell 模組的向下相容性。 這包括許多 Windows 上需要圖形介面功能的模組,如 Out-GridViewShow-Command,以及許多作為 Windows 一部分附帶的角色管理模組。

對於 Windows,新增了一個開關參數 UseWindowsPowerShellImport-Module 此交換器在 PowerShell 7 中建立一個代理模組,該模組使用本地 Windows PowerShell 程序隱含執行該模組中的任何 cmdlet。 欲了解更多關於 Import-Module 的資訊。

欲了解更多 Microsoft 模組可與 PowerShell 7.0 相容的資訊,請參閱 模組相容性表

並行執行加入 ForEach-Object

ForEach-Object cmdlet 會迭代集合中的項目,現在內建了與新 Parallel 參數的平行性。

預設情況下,平行腳本區塊會使用啟動平行任務的呼叫者目前的工作目錄。

此範例從本地 Windows 機器的 5 個系統日誌中取得 50,000 筆日誌:

$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'

$logEntries = $logNames | ForEach-Object -Parallel {
    Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5

$logEntries.Count

50000

Parallel 參數指定每個輸入日誌名稱平行執行的腳本區塊。

新的 ThrottleLimit 參數限制了在特定時間並行執行的腳本區塊數量。 預設值為 5。

使用變 $_ 數來表示腳本區塊中目前的輸入物件。 利用 $using: 作用域將變數參考傳遞給執行中的腳本區塊。

欲了解更多關於 ForEach-Object 的資訊。

三元運算子

PowerShell 7.0 引入了一個三元運算子,其行為類似簡化 if-else 語句。 PowerShell 的三元運算子是根據 C# 三元運算子語法緊密建模的:

<condition> ? <if-true> : <if-false>

條件表達式總是會被評估,並將結果轉換為 布林值 ,以決定下一個要評估哪個分支:

  • 如果 <if-true> 表示式為 true,則會執行 <condition> 表示式
  • 如果 <if-false> 表示式為 false,則會執行 <condition> 表示式

例如:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

在這個例子中,如果路徑存在,則會顯示 「路徑存在 」。 如果路徑不存在,則會顯示「 找不到路徑 」。

欲了解更多 關於 If 的資訊。

管線鏈營運商

PowerShell 7 實 && 作了 和 || 運算子來條件鏈結管線。 這些運算子在 PowerShell 中稱為「管線鏈運算子」,類似於 shell bashzsh中的 AND 和 OR 清單,以及 Windows 指令殼層中的條件處理符號(cmd.exe)。

如果左側管線成功,運算符 && 會執行右側管線。 相反地,如果左側管線失敗, || 運算符會執行右側管線。

備註

這些運算子會使用 $?$LASTEXITCODE 變數來判斷管線是否失敗。 這可讓您搭配原生命令使用它們,而不只是搭配 Cmdlet 或函式使用。

此時,第一個指令成功,第二個指令執行:

Write-Output 'First' && Write-Output 'Second'
First
Second

此處第一個指令失敗,第二個指令未執行:

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

此處第一個指令成功,第二個指令未執行:

Write-Output 'First' || Write-Output 'Second'
First

此處第一個指令失敗,因此執行第二個指令:

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

欲了解更多 關於管線鏈營運商的資訊。

空聚合、指派與條件運算子

PowerShell 7 包含 Null 聚合運算子 ??、Null 條件分配 ??=,以及 Null 條件成員存取運算子 ?.?[]

零聚合運算子??

如果 null-coalescing 運算 ?? 子不是 null,則會回傳其左手運算元的值。 否則,它會評估右側作數,並傳回其結果。 當左側操作數的計算結果為非 Null 時,?? 運算符不會計算其右側操作數。

$x = $null
$x ?? 100
100

以下範例中,右側運算元不會被評估:

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

空條件指派運算子 ??=

空條件指派運算 ??= 子只有在左邊運算元值為空時,才會將其右手運算元的值指派給左手運算元。 當左側操作數的計算結果為非 Null 時,??= 運算符不會計算其右側操作數。

$x = $null
$x ??= 100
$x
100

以下範例中,右側運算元未被評估:

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

空條件成員存取運算子 ? 和?[](實驗性)

備註

這是一個名為 PSNullConditionalOperators 的實驗性功能。 欲了解更多資訊,請參閱 「使用實驗特徵」。

空條件運算子只有在該運算元值值非空時,才允許成員存取 ?.或元素存取 ?[]其運算元;否則,該運算子會回傳 null。

備註

由於 PowerShell 允許 ? 成為變數名稱的一部分,因此使用這些運算元需要變數名稱的正式規格。 所以必須在變數名稱 附近使用 {} ,例如 ${a}? 是變數名稱 ${a?}的一部分。

以下範例中,回傳成員屬性 Status 的值:

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

以下範例回傳 null,且未嘗試存取成員名稱 Status

$service = $Null
${Service}?.status

同理,使用 ?[],則回傳該元素的值:

$a = 1..10
${a}?[0]
1

當操作數為 null 時,該元素不會被存取,會回傳 null:

$a = $null
${a}?[0]

欲了解更多資訊 ,請About_Operators

新檢視 ConciseView 與 cmdlet Get-Error

PowerShell 7.0 透過新的預設檢視 ConciseView 強化錯誤訊息顯示,以提升互動式及腳本錯誤的可讀性。 使用者可透過偏好變數 $ErrorView選擇視圖。

ConciseView 中,如果錯誤不是來自腳本或解析器錯誤,那就是單行錯誤訊息:

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

若錯誤發生於腳本執行期間或為解析錯誤,PowerShell 會回傳包含錯誤、指標及錯誤訊息,顯示錯誤在該行的位置。 如果終端機不支援 ANSI 色跳脫序列(VT100),則不會顯示顏色。

腳本錯誤顯示

PowerShell 7 的預設視圖是 ConciseView。 之前的預設視圖是 NormalView ,你可以透過設定偏好變數 $ErrorView來選擇。

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

備註

新增$Host.PrivateData了一個屬性 ErrorAccentColor,以支援更改錯誤訊息的重音顏色。

新指令集 Get-Error 可於需要時提供完整詳細的全限定錯誤視圖。 預設情況下,cmdlet 會顯示上次錯誤的完整細節,包括內部例外。

Get-Error 的顯示

指令 Get-Error 檔支援使用內建變數 $ErrorGet-Error 顯示所有管道錯誤。

$Error | Get-Error

cmdlet Get-Error 支援 Newest 參數,讓你指定想顯示當前會話的錯誤數量。

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

欲了解更多關於 Get-Error 的資訊。

新版本通知

PowerShell 7 利用更新通知提醒使用者 PowerShell 有更新的存在。 每天一次,PowerShell 會查詢在線服務,以判斷是否有較新版本可用。

備註

更新檢查會在指定 24 小時內的第一次會話中進行。 出於效能考量,更新檢查會在會話開始後 3 秒開始。 通知僅在後續會話開始時顯示。

預設情況下,PowerShell 會根據其版本/分支訂閱兩種不同的通知頻道之一。 支援的 General-Available(GA)版本 PowerShell 僅回傳更新版 GA 版本的通知。 預覽與候選版本(RC)發布會通知預覽版、RC 及通用版版本的更新。

您可以使用 $Env:POWERSHELL_UPDATECHECK 環境變數來變更更新通知行為。 支援下列值:

  • 預設 就和不定義是一樣的 $Env:POWERSHELL_UPDATECHECK
    • GA 更新版本公告會通知有關 GA 更新的資訊
    • 預覽/RC 版本會通知 GA 和預覽版本的更新
  • 關閉 會關閉更新通知功能
  • LTS 僅通知長期服務(LTS)GA 版本的更新

備註

環境變數 $Env:POWERSHELL_UPDATECHECK 直到第一次設定時才會存在。

要設定版本通知 LTS 僅限於發行:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

要將版本通知設定為以下 Default 行為:

$Env:POWERSHELL_UPDATECHECK = 'Default'

欲了解更多 關於更新通知的資訊。

新增 DSC 資源支援,包含 Invoke-DSCResource(實驗性)

備註

這是一個名為 PSDesiredStateConfiguration.InvokeDscResource 的實驗性功能。 欲了解更多資訊,請參閱 「使用實驗特徵」。

Invoke-DscResource cmdlet 執行指定的 PowerShell Desired State Configuration (DSC) 資源的方法。

此指令本直接呼叫 DSC 資源,無需建立組態文件。 利用此指令,組態管理產品可利用 DSC 資源管理 Windows 或 Linux。 此 cmdlet 也能在 DSC 引擎啟用除錯時,支援資源除錯。

此指令會呼叫名為 WindowsProcess 的資源的 Set 方法,並提供啟動指定 Windows 程序所需的 PathArguments 屬性。

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

欲了解更多關於 Invoke-DSCResource 的資訊。

突破性變更與改進

重大變更

  • 更新通知支援LTS與預設頻道(#11132)
  • 更新 Test-Connection,讓它更像 Windows PowerShell 裡的 (#10697)(謝謝) @vexx32!)
  • 保全美元? 用於 ParenExpression、SubExpression 與 ArrayExpression (#11040)
  • 請將工作目錄設為 Start-Job 的 current 目錄(#10920)(謝謝) @iSazonov!)
  • 讓$PSCulture持續反映會場文化的變化(#10138)(謝謝) @iSazonov!)

引擎更新與修正

  • 遠端情境中斷點 API 改進(#11312)
  • 修正 PowerShell 類別定義洩漏到另一個跑道空間(#11273)
  • 修正 7.0.0-Preview1 (#11258) 中新增的 FirstOrDefault 原語所造成的格式回歸問題
  • PS7遙測中需追蹤的額外Microsoft模組(#10751)
  • 將核准功能設為非實驗性(#11303)
  • 若適用,將簡縮檢視(ConciseView)更新為使用 TargetObject(#11075)
  • 修正 CompletionCompleters 公開方法中的 NullReferenceException (#11274)
  • 修正非 Windows 平台上的公寓執行緒狀態檢查(#11301)
  • 更新設定 PSModulePath 以串接程序與機器環境變數(#11276)
  • 將 .NET Core 升級至 3.1.0 (#11260)
  • 修正$env:PATH (#11141) 前方偵測$PSHOME
  • 允許 pwsh 繼承 $env:PSModulePath,並啟用 powershell.exe 正確啟動(#11057)
  • 遷移至 .NET Core 3.1 預覽版 1 (#10798)
  • 在檔案系統提供者中重構解析標籤檢查(#10431)(謝謝) @iSazonov!)
  • 在腳本日誌中將 CR 和新行替換為 0x23CE 字元(#10616)
  • 透過取消註冊 AppDomain.CurrentDomain.ProcessExit (#10626)中的事件處理程序來修復資源洩漏
  • 新增 ActionPreference.Break 支援,當產生除錯、錯誤、資訊、進度、冗長或警告訊息時,能進入除錯器(#8205)(感謝) @KirkMunro!)
  • 在 PowerShell 中啟用啟動控制面板外掛,但不指定.CPL擴充功能。 (#9828)
  • 在 -split 操作符(#8960)中支援負數(謝謝) @ece-jacob-scott!)

通用指令長更新與修正

  • 修復 Raspbian 上 UnixStat 實驗功能(#11313)中設定檔案變更日期的問題
  • 將 -AsPlainText 加到 ConvertFrom-SecureString(#11142)
  • 新增 WindowsPS 版本檢查以測試 WinCompat(#11148)
  • 修正某些 WinCompat(WinCompat)情境中的錯誤回報問題(#11259)
  • 新增原生二進位解析器(#11032)(謝謝) @iSazonov!)
  • 更新字元寬度計算以正確尊重中日韓字元(#11262)
  • 新增 macOS Unblock-File (#11137)
  • 修正 Get-PSCallStack 中的回歸問題(#11210)(謝謝) @iSazonov!)
  • 使用 Job cmdlets (#11194) 時移除 ScheduledJob 模組的自動載入
  • 將 OutputType 加入 Get-Error 指令匣並保留原始類型名稱(#10856)
  • 修正 SupportsVirtualTerminal 屬性中的空參考(#11105)
  • Get-WinEvent 新增極限檢查(#10648)(謝謝) @iSazonov!)
  • 修正指令執行時,讓 StopUpUpCommandsException 不會在 -ErrorVariable (#10840) 中被填入
  • 將輸出編碼設為 [Console]::OutputEncoding 以使用原生指令(#10824)
  • 範例中支援多行程式碼區塊(#10776)(感謝) @Greg-Smulko!)
  • 在 Select-String cmdlet (#10943) 中新增 Culture 參數 @iSazonov!)
  • 修正 Start-Job 目錄路徑後尾反斜線(#11041)
  • ConvertFrom-Json:預設展開集合(#10861)(謝謝) @danstur!)
  • 使用大小寫區分的 Hashtable,適用於 Group-Object -CaseSensitive 和 -AsHashtable 交換器的 cmdlet(#11030)(謝謝) @vexx32!)
  • 在重建路徑以取得正確外殼時,列舉檔案失敗時處理例外(#11014)
  • 修正 ConciseView 將顯示為活動(Activity)而非 myCommand(#11007)
  • 允許網頁指令小程式忽略 HTTP 錯誤狀態(#10466)(謝謝) @vdamewood!)
  • 修正多個 CommandInfo 傳輸到 Get-Command (#10929)
  • 重新 Get-Counter Windows 指令檔(#10933)
  • 讓 ConvertTo-Json 將 [AutomationNull]::Value 和 [NullString]::Value 視為 $null (#10957)
  • 移除 IPv6 位址中的括號以進行 SSH 遠端通訊(#10968)
  • 如果傳送到 pwsh 的指令只是空白,如何修復當機問題(#10977)
  • 新增跨平台 Get-Clipboard 與 Set-Clipboard(#10340)
  • 修正設定檔案系統物件的原始路徑,避免多餘的尾部斜線(#10959)
  • 支援$null ConvertTo-Json (#10947)
  • 在 Windows 上重新加入 Out-Printer 指令(#10906)
  • 用空白位修正 Start-Job -WorkingDirectory(#10951)
  • 在 PSConfiguration.cs (#10963) 中取得 null 時回傳預設值(謝謝) @iSazonov!)
  • 將 IO 例外處理為非終止異常(#10950)
  • 新增 GraphicalHost 組合以啟用 Out-GridView、Show-Command 及 Get-Help -ShowWindow(#10899)
  • 透過 Get-HotFix (#10852) 的管線取得 ComputerName(感謝) @kvprasoon!)
  • 修正參數的分頁補全,使其顯示常見參數的可用(#10850)
  • 修正 GetCorrectCasedPath() 先檢查是否有系統檔案項目回傳,再呼叫 First() (#10930)
  • 請將工作目錄設為 Start-Job 的 current 目錄(#10920)(謝謝) @iSazonov!)
  • 將 TabExpansion2 改為不需 -CursorColumn,並設為 $InputScript.Length (#10849)
  • 處理主機無法回傳畫面列或欄的情況(#10938)
  • 修正不支援重音色的主機使用強調色的問題(#10937)
  • 重新 Update-List 指令(#10922)
  • 更新 Clear-RecycleBin 的 FWLink ID(#10925)
  • 在分頁完成時,如果無法讀取檔案屬性,請跳過檔案(#10910)
  • Windows Clear-RecycleBin 重新加入(#10909)
  • 新增 $env:__SuppressAnsiEscapeSequences 控制是否要在輸出中加入 VT 逃脫序列(#10814)
  • 新增 -NoEmphasize 參數來為輸出上色 Select-String(#8963)(謝謝) @derek-xia!)
  • 重新加入 Get-HotFix 指令檔(#10740)
  • 讓 Add-Type 能在承載 PowerShell 的應用程式中使用(#10587)
  • 在 LanguagePrimitives.IsNullLike() (#10781) 中使用更有效的評估順序 @vexx32!)
  • 改善 Format-Hex 中混合收集管道輸入與管道輸入流的處理(#8674)(感謝) @vexx32!)
  • 當值與預期型別不符時,請使用 SSHConnection 雜湊表中的類型轉換(#10720)(謝謝) @SeeminglyScience!)
  • 修正 Get-Content -ReadCount 設定 -TotalCount 0 行為(#10749)(謝謝) @eugenesmlv!)
  • Reword 存取被拒於 Get-WinEvent (#10639)(謝謝) @iSazonov!)
  • 啟用 Tab 補全功能,適用於列舉或型別受限的變數指派(#10646)
  • 移除未使用的 SourceLength 遠端屬性,導致格式問題(#10765)
  • 在 ConvertFrom-StringData (#10665) 加入 -Delimiter 參數(謝謝) @steviecoaster!)
  • 使用 SSH (#10721) 使用 Invoke-Command 時,為 ScriptBlock 新增位置參數(謝謝) @machgo!)
  • 若多行顯示行情境資訊,但無 ConciseView (#10746) 的腳本名稱
  • 新增對檔案系統提供者(#10674)路徑的支援
  • 在解析器(#10706)中新增缺少的 TokenKind.QuestionMark 文字
  • 將每個執行腳本 ForEach-Object -Parallel 目前的工作目錄設為與呼叫腳本相同的位置。 (#10672)
  • 請將 api-ms-win-core-file-l1-2-2.dll 替換為 FindFirstStreamW 和 FindNextStreamW API 的 Kernell32.dll(#10680)(謝謝) @iSazonov!)
  • 調整格式化腳本以更適合嚴格模式(#10563)
  • 在 New-Service (#10483) 加入 -SecurityDescriptorSDDL 參數 (謝謝) @kvprasoon!)
  • 移除資訊輸出,整合 ping 使用量在 Test-Connection (#10478)(謝謝) @vexx32!)
  • 讀取特殊解析點(#10662)(謝謝) @iSazonov!)
  • 直接 Clear-Host 輸出到端子(#10681)(謝謝) @iSazonov!)
  • 回加換行以便與 Format-Table 和 -Property 分組(#10653)
  • 在 Get-Random 上移除 [ValidateNotNullOrEmpty] 從 -InputObject 中移除,以允許空字串(#10644)
  • 建議系統字串距離演算法大小寫不區分(#10549)(謝謝) @iSazonov!)
  • 修正 ForEach-Object -Parallel 輸入處理中的空參考例外(#10577)
  • Add PowerShell 群組政策定義 (#10468)
  • 更新主控台主機以支援用於組合情境的 XTPUSHSGR/XTPOPSGR VT 控制序列。 (#10208)
  • 新增 WorkingDirectory 參數到 Start-Job (#10324)(謝謝) @davinci26!)
  • 移除導致斷點變更錯誤複製到主機跑空間除錯器(#10503)的事件處理程序(謝謝) @KirkMunro!)
  • 請在 Microsoft.PowerShell.Commands.NativeMethods p/Invoke API(#10417) 中將 api-ms-win-core-job-12-1-0.dll 替換成 Kernell32.dll @iSazonov!)
  • 修正變數指派與 -OutVariable 中錯誤的輸出 New-Service(#10444)(謝謝) @kvprasoon!)
  • 修正全域工具關於退出代碼、命令列參數及帶空格路徑的問題(#10461)
  • 修正 OneDrive 的遞迴問題 - 將 FindFirstFileEx() 改為使用 SafeFindHandle 類型(#10405)
  • 若 NVDA 螢幕閱讀器啟動,請跳過 Windows 自動載入 PSReadLine(#10385)
  • 將 PowerShell 內建模組版本提升至 7.0.0.0(#10356)
  • 如果已有同名型別存在,請加上錯誤 Add-Type(#9609)(謝謝) @iSazonov!)

Performance

  • 避免在 Parser.SaveError (#11006) 中使用閉包
  • 在建立新的正則表達式實例時,請改善快取功能(#10657)(感謝 @iSazonov!)
  • 改進 PowerShell 內建型別資料的處理,來源為 types.ps1xml、typesV3.ps1xml 及 GetEvent.types.ps1xml(#10898)
  • 更新 PSConfiguration.ReadValueFromFile 以提升速度與記憶體效率(#10839)
  • 新增一些小幅的效能優化以進行跑位初始化(#10569)(感謝) @iSazonov!)
  • 讓 ForEach-Object 在常用情境下更快(#10454),並修正 ForEach-Object -Parallel 多跑道空間的效能問題(#10455)

程式碼清理

  • 更改註解與元素文字以符合 Microsoft 標準(#11304)
  • Compiler.cs (#10368) 的清理風格問題(謝謝) @iSazonov!)
  • 移除 CommaDelimitedStringCollection (#11000) 的未使用的類型轉換器 (謝謝) @iSazonov!)
  • InitialSessionState.cs (#10865) 的清理風格 (謝謝) @iSazonov!)
  • PSSession 類別的程式碼清理(#11001)
  • 移除無法運作的「Get-Help 首次運行時 Update-Help Get-Help」功能(#10974)
  • 修正風格問題(#10998)(謝謝) @iSazonov!)
  • 清理:使用內建類型別名(#10882)(謝謝) @iSazonov!)
  • 移除未使用的設定鍵 ConsolePrompting,並避免在查詢 ExecutionPolicy 設定(#10985)時產生不必要的字串
  • 關閉每日建置的更新通知檢查(#10903)(謝謝) @bergmeister!)
  • #10338 (#10808) 遺失的恢復除錯 API
  • 移除已不再使用的 WorkflowJobSourceAdapter 參考(#10326)(謝謝) @KirkMunro!)
  • 透過修正 PreserveSig 屬性(#9899)來清理跳轉清單程式碼中的 COM 介面(感謝) @weltkante!)
  • 請加上一則說明說明為什麼 -ia 不是 -InformationAction 常見參數的別名(#10703)(謝謝) @KirkMunro!)
  • 將InvokeCommandCmdlet.cs改名為InvokeExpressionCommand.cs(#10659)(謝謝) @kilasuit!)
  • 新增與更新通知相關的小規模程式碼清理(#10698)
  • 從遠端設置腳本(#10320)中移除已棄用的工作流程邏輯 @KirkMunro!)
  • 更新說明格式以使用正確的大小寫(#10678)(謝謝) @tnieto88!)
  • 清理過去一個月提交中出現的 CodeFactor 類問題(#10591)(感謝) @iSazonov!)
  • 修正 PSTernaryOperator 實驗功能描述中的錯字(#10586)(謝謝) @bergmeister!)
  • 將 ActionPreference.Suspend 枚舉值轉換為非支援且保留狀態,並移除使用 ActionPreference.Ignore 的偏好變數限制(#10317)(謝謝) @KirkMunro!)
  • 用 List<T> 取代 ArrayList,以獲得更易讀且可靠的程式碼,且不改變功能(#10333)(謝謝) @iSazonov!)
  • 對 TestConnectionCommand (#10439) 進行程式碼風格修正(謝謝) @vexx32!)
  • Cleanup AutomationEngine 並移除多餘的 SetSessionStateDrive 方法呼叫(#10416)(感謝) @iSazonov!)
  • 將預設 ParameterSetName 重新命名為 Delimiter 以 ConvertTo-Csv 和 ConvertFrom-Csv (#10425)

Tools

  • 為 SDKToUse 屬性新增預設設定,使其能在 VS 中建置(#11085)
  • Install-Powershell.ps1:新增參數以使用 MSI 安裝(#10921)(謝謝) @MJECloud!)
  • 請為 install-powershell.ps1(#10914)加入基本範例(謝謝) @kilasuit!)
  • 讓 Install-PowerShellRemoting.ps1 在 PowerShellHome 參數(#10526)中處理空字串 (謝謝) @Orca88!)
  • 在 install-powershell.sh (#10773) 中從 /etc/lsb-release 切換到 /etc/os-release(謝謝) @Himura2la!)
  • 請在 Windows 的每日版本(#10738)中檢查 pwsh.exe 和 pwsh(謝謝) @centreboard!)
  • 移除 installpsh-osx.sh 中不必要的水龍頭(#10752)
  • 更新 install-powershell.ps1 以檢查已安裝的每日建置(#10489)

測試

  • 將不可靠的DSC測試設待處理(#11131)
  • 修正 stringdata 測試以正確驗證雜湊表的鍵(#10810)
  • 卸載測試模組(#11061)(謝謝) @iSazonov!)
  • 測試網址重試間隔時間增加(#11015)
  • 更新測試以準確描述測試動作。 (#10928)(謝謝 @romero126!)
  • 暫時跳過 the flaky test TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • 讓事件處理程式洩漏測試穩定(#10790)
  • CI YAML (#10767) 中的同步大寫(謝謝) @RDIL!)
  • 新增事件處理程式洩漏修正測試(#10768)
  • 新增 Get-ChildItem 測試(#10507)(謝謝) @iSazonov!)
  • 將測試的歧義語言從切換到參數以提升準確度(#10666)取代(謝謝) @romero126!)
  • 在 ForEach-Object -Parallel 測試中加入實驗檢查(#10354)(謝謝) @KirkMunro!)
  • Alpine 驗證測試更新(#10428)

建置與套件改進

  • 修正協調套件建置的 Nuget 套件簽章問題(#11316)
  • 更新來自 PowerShell Gallery 與 NuGet (#11323) 的依賴關係
  • 將 Microsoft.ApplicationInsights 從 2.11.0 提升到 2.12.0 (#11305)
  • 將 Microsoft.CodeAnalysis.CSharp 從 3.3.1 提升到 3.4.0 (#11265)
  • Debian 10 與 11 (#11236) 的更新套件
  • 僅在 RC (#11162) 之前啟用實驗性功能
  • 更新 macOS 最低版本(#11163)
  • 將 NJsonSchema 從 10.0.27 調整到 10.0.28 (#11170)
  • 更新 README.md 與 metadata.json 中的連結以支援 Preview.5 (#10854)
  • 選擇由 PowerShell 擁有的合規測試檔案(#10837)
  • 允許 win7x86 msix 套件建置。 (內部10515)
  • 允許語意版本傳遞給 NormalizeVersion 函式(#11087)
  • 將 .NET 核心框架提升至 3.1-preview.3 (#11079)
  • 將 PSReadLine 從 2.0.0-beta5 提升到 2.0.0-beta6,收錄於 /src/Modules(#11078)
  • Newtonsoft.Json 從 12.0.2 升級到 12.0.3 (#11037)(#11038)
  • 新增 Debian 10、11 與 CentOS 8 套件(#11028)
  • 上傳 Build-Info Json 檔案,並標示 ReleaseDate 欄位(#10986)
  • 將 .NET 核心框架提升至 3.1-preview.2 (#10993)
  • 啟用 x86 MSIX 套件編譯(#10934)
  • 更新 build.psm1 (#10927) 中的 dotnet SDK 安裝腳本 URL。
  • Bump Markdig。簽名時間為 0.17.1 至 0.18.0 (#10887)
  • Bump ThreadJob 從 2.0.1 到 2.0.2 (#10886)
  • 更新 AppX 清單與包裝模組以符合 MS Store 要求(#10878)
  • Update package reference for PowerShell SDK to preview.5 (Internal 10295)
  • 更新 ThirdPartyNotices.txt(#10834)
  • Bump Microsoft.PowerShell.Native to 7.0.0-preview.3 (#10826)
  • 將 Microsoft.ApplicationInsights 從 2.10.0 提升到 2.11.0 (#10608)
  • 將 NJsonSchema 從 10.0.24 調整至 10.0.27 (#10756)
  • 在建置系統中加入 MacPorts 支援(#10736)(謝謝) @Lucius-Q-User!)
  • 套件管理從 1.4.4 到 1.4.5 (#10728)
  • 將 NJsonSchema 從 10.0.23 調整到 10.0.24 (#10635)
  • 新增環境變數以區分 MSI 中的客戶端/伺服器遙測(#10612)
  • 將 PSDesiredStateConfiguration 從 2.0.3 調整到 2.0.4 (#10603)
  • 將 Microsoft.CodeAnalysis.CSharp 從 3.2.1 提升到 3.3.1 (#10607)
  • 更新至 .Net Core 3.0 RTM(#10604)(謝謝) @bergmeister!)
  • 更新 MSIX 封包,使其版本符合 Windows Store 需求(#10588)
  • PowerShellGet 版本從 2.2 提升到 2.2.1 (#10382)
  • Bump PackageManagement 版本從 1.4.3 到 1.4.4(#10383)
  • 更新 README.md 與 metadata.json 7.0.0-preview.4(內部 10011)
  • 將 .Net Core 3.0 版本從預覽版 9 升級到 RC1(#10552)(謝謝) @bergmeister!)
  • 修正 ExperimentalFeature 列表產生(內部 9996)
  • PSReadLine 版本從 2.0.0-beta4 提升至 2.0.0-beta5(#10536)
  • 修正發佈建置腳本設定發佈標籤
  • 更新 Microsoft.PowerShell.Native 至 7.0.0-preview.2 (#10519)
  • 升級到 Netcoreapp 3.0 preview9 (#10484)(謝謝) @bergmeister!)
  • 確保每日協調的建構知道它是每日建構(#10464)
  • 更新合併套件建置以釋出每日建置(#10449)
  • 移除相關參考(#10445)(謝謝) @RDIL!)
  • 將 NJsonSchema 版本從 10.0.22 調整到 10.0.23 (#10421)
  • 移除刪除 linux-x64 建構資料夾,因為某些 Alpine 相依需要刪除(#10407)

文件與說明內容

  • 將變更日誌重構為每個版本的日誌(#11165)
  • 修復 PowerShell 7 線上說明文件 FWLinks (#11071)
  • 更新 CONTRIBUTING.md (#11096)(謝謝) @mklement0!)
  • 修正安裝文件連結 README.md (#11083)
  • 為 install-powershell.ps1 script(#11024)新增範例(謝謝) @kilasuit!)
  • 修正 Select-String 重音與 Import-DscResource CHANGELOG.md (#10890)
  • 移除 powershell-beginners-guide.md(#10926)中過時的連結
  • 合併穩定與服務變更日誌(#10527)
  • 更新:在建置文件中使用的 .NET 版本(#10775)(謝謝) @Greg-Smulko!)
  • 替換 MSDN 到 Microsoft Learn in powershell-beginners-guide.md (#10778)(謝謝) @iSazonov!)
  • 修復故障的 DSC 總覽連結(#10702)
  • 更新 Support_Question.md,連結到 Stack Overflow 作為另一個社群資源(#10638)(謝謝) @mklement0!)
  • 將處理器架構加入分發請求範本(#10661)
  • 新增 PowerShell MoL 書籍以學習 PowerShell 文件(#10602)
  • 更新 README.md 與 v6.1.6 與 v6.2.3 版本的元資料(#10523)
  • 修正 README.md(#10465)中的一個錯字(謝謝) @vedhasp!)
  • 在學習資源文件中加入 PSKoans 模組的參考(#10369)(謝謝) @vexx32!)
  • 更新 README.md 與 7.0.0-preview.3 (#10393) 的 metadata.json