共用方式為


從 Windows PowerShell 5.1 移轉至 PowerShell 7

PowerShell 7 專為雲端、內部部署和混合式環境所設計,隨附增強功能和 新功能

  • 與 Windows PowerShell 並存安裝並執行
  • 改善與現有 Windows PowerShell 模組的相容性
  • 新的語言功能,例如三元運算符和 ForEach-Object -Parallel
  • 提升效能
  • SSH 型遠端處理
  • 跨平臺互操作性
  • 支援 Docker 容器

PowerShell 7 與 Windows PowerShell 並存運作,可讓您在部署前輕鬆測試版本並加以比較。 移轉很簡單、快速且安全。

下列 Windows 作業系統支援 PowerShell 7:

  • Windows 10 和 11
  • Windows Server 2016、2019 和 2022

PowerShell 7 也會在macOS和數個Linux發行版上執行。 如需支援的操作系統清單,以及支援生命週期的相關信息,請參閱 PowerShell 支援生命週期

安裝 PowerShell 7

為了彈性和支援 IT、DevOps 工程師和開發人員的需求,有數個選項可供安裝 PowerShell 7。 在大部分情況下,安裝選項可縮減為下列方法:

注意

MSI 套件可以使用 Microsoft Configuration Manager管理產品來部署和更新。 從 GitHub 發行頁面下載套件。

部署 MSI 套件需要 管理員 istrator 許可權。 ZIP 套件可由任何使用者部署。 ZIP 套件是安裝 PowerShell 7 以進行測試的最簡單方式,再認可完整安裝。

您也可以透過 Windows 市集或 winget安裝 PowerShell 7。 如需這兩種方法的詳細資訊,請參閱在 Windows 上安裝 PowerShell 中的詳細指示。

使用 PowerShell 7 與 Windows PowerShell 5.1 並存

PowerShell 7 的設計目的是要與 Windows PowerShell 5.1 共存。 下列功能可確保您對 PowerShell 的投資受到保護,且移轉至 PowerShell 7 很簡單。

  • 個別安裝路徑和可執行檔名稱
  • 個別 PSModulePath
  • 每個版本的個別配置檔
  • 改善的模組相容性
  • 新的遠端端端點
  • 組策略支援
  • 個別事件記錄檔

.NET 版本的差異

PowerShell 7.2 建置在 .NET 6.0 上。 Windows PowerShell 5.1 建置在 .NET Framework 4.x 上。 .NET 版本之間的差異可能會影響腳本的行為,特別是當您直接呼叫 .NET 方法時。 如需詳細資訊, Windows PowerShell 5.1 與 PowerShell 7.x 之間的差異。

個別安裝路徑和可執行檔名稱

PowerShell 7 會安裝到新的目錄,使用 Windows PowerShell 5.1 啟用並存執行。

依版本安裝位置:

  • Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell 6.x: $env:ProgramFiles\PowerShell\6
  • PowerShell 7: $env:ProgramFiles\PowerShell\7

新的位置會新增至您的PATH,讓您執行 Windows PowerShell 5.1 和 PowerShell 7。 如果您要從 PowerShell 6.x 移轉至 PowerShell 7,則會移除 PowerShell 6 並取代 PATH。

在 Windows PowerShell 中,PowerShell 可執行檔的名稱為 powershell.exe。 在 6 版與更新版本中,可執行檔案的名稱為 pwsh.exe。 新的名稱可讓您輕鬆地支援這兩個版本的並存執行。

個別 PSModulePath

根據預設,Windows PowerShell 與 PowerShell 7 會在不同的位置儲存模組。 PowerShell 7 會將那些位置合併到 $Env:PSModulePath 環境變數中。 依名稱匯入模組時,PowerShell 會檢查 所 $Env:PSModulePath指定的位置。 這可讓 PowerShell 7 同時載入 Core 和 Desktop 模組。

安裝範圍 Windows PowerShell 5.1 PowerShell 7.0
PowerShell 模組 $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $env:ProgramFiles\PowerShell\7\Modules
已安裝使用者
AllUsers 範圍
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
已安裝使用者
CurrentUser 範圍
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

下列範例顯示每個版本的 預設值 $Env:PSModulePath

  • 針對 Windows PowerShell 5.1:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\WindowsPowerShell\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    
  • 針對 PowerShell 7:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\PowerShell\Modules
    C:\Program Files\PowerShell\Modules
    C:\Program Files\PowerShell\7\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    

請注意,PowerShell 7 包含 Windows PowerShell 路徑和 PowerShell 7 路徑,以提供模組的自動載入。

注意

如果您已變更 PSModulePath 環境變數或已安裝的自訂模組或應用程式,可能會有其他路徑。

如需詳細資訊,請參閱 about_PSModulePath

如需模組的詳細資訊,請參閱 about_Modules

個別配置檔

PowerShell 配置檔是 PowerShell 啟動時執行的腳本。 此腳本會藉由新增命令、別名、函式、變數、模組和 PowerShell 磁碟驅動器,來自定義您的環境。 配置文件文本可在每個會話中使用這些自定義專案,而不需要手動重新建立它們。

配置檔位置的路徑已在 PowerShell 7 中變更。

  • 在 Windows PowerShell 5.1 中,設定檔的位置是 $HOME\Documents\WindowsPowerShell
  • 在 PowerShell 7 中,設定檔的位置是 $HOME\Documents\PowerShell

設定檔檔名稱也已變更:

$PROFILE | Select-Object *Host* | Format-List
 AllUsersAllHosts       : C:\Program Files\PowerShell\7\profile.ps1
 AllUsersCurrentHost    : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
 CurrentUserAllHosts    : C:\Users\<user>\Documents\PowerShell\profile.ps1
 CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

如需詳細資訊 ,about_Profiles

PowerShell 7 與 Windows PowerShell 5.1 模組的相容性

您在 Windows PowerShell 5.1 中使用的大部分模組都已使用 PowerShell 7,包括 Azure PowerShell 和 Active Directory。 我們會繼續與其他小組合作,為更多模組新增原生 PowerShell 7 支援,包括 Microsoft Graph、Office 365 和其他模組。 如需目前支援的模組清單,請參閱 PowerShell 7 模組相容性

注意

在 Windows 上,我們也新增 了 UseWindowsPowerShell 參數, Import-Module 以簡化使用不相容模組的 PowerShell 7 轉換。 如需此功能的詳細資訊,請參閱 about_Windows_PowerShell_Compatibility

PowerShell 遠端

PowerShell 遠端功能可讓您在一或多部遠端電腦上執行任何 PowerShell 命令。 您可以建立持續性連線、啟動互動式會話,以及在遠端電腦上執行腳本。

WS 管理遠端處理

Windows PowerShell 5.1 和以下版本使用 WS-Management (WSMAN) 通訊協定進行連線交涉和數據傳輸。 Windows 遠端管理 (WinRM) 使用 WSMAN 通訊協定。 如果已啟用 WinRM,PowerShell 7 會使用名為 Microsoft.PowerShell 的現有 Windows PowerShell 5.1 端點進行遠端連線。 若要更新PowerShell 7 以包含自己的端點,請執行 Enable-PSRemoting Cmdlet。 如需連線到特定端點的相關信息,請參閱 PowerShell 中的 WS 管理遠端處理

若要使用 Windows PowerShell 遠端功能,遠端電腦必須設定為遠端管理。 如需詳細資訊,包括指示,請參閱 關於遠端需求

如需使用遠端的詳細資訊,請參閱 關於遠端

SSH 型遠端處理

以 SSH 為基礎的遠端功能已新增至 PowerShell 6.x,以支援其他無法使用 WinRM 等 Windows 原生元件的操作系統。 SSH 遠端會在目標電腦上建立 PowerShell 主機處理序作為 SSH 子系統。 如需在 Windows 或 Linux 上設定 SSH 型遠端的詳細資訊和範例,請參閱: 透過 SSH 進行 PowerShell 遠端處理。

注意

PowerShell 資源庫 (PSGallery) 包含模組和 Cmdlet,可自動設定 SSH 型遠端。 Microsoft.PowerShell.RemotingToolsPSGallery 安裝模組,然後執行 Enable-SSH Cmdlet。

New-PSSessionEnter-PSSessionInvoke-Command Cmdlet 有新的參數集來支援 SSH 連線。

[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]

若要建立遠端會話,請使用 HostName 參數指定目標電腦,並使用 UserName 提供用戶名稱。 以互動方式執行 Cmdlet 時,系統會提示您輸入密碼。

Enter-PSSession -HostName <Computer> -UserName <Username>

或者,使用 HostName 參數時,請提供使用者名稱資訊,後面接著 at sign (@),後面接著計算機名稱。

Enter-PSSession -HostName <Username>@<Computer>

您可以使用私鑰檔案搭配 KeyFilePath 參數來設定 SSH 金鑰驗證。 如需詳細資訊,請參閱 OpenSSH 金鑰管理

支援的組策略

PowerShell 包含組策略設定,可協助您為企業環境中的伺服器定義一致的選項值。 這些設定包括:

  • 控制台會話組態:設定執行 PowerShell 的組態端點。
  • 開啟模組記錄:設定模組的LogPipelineExecutionDetails屬性。
  • 開啟 PowerShell 腳本區塊記錄:啟用所有 PowerShell 腳本的詳細記錄。
  • 開啟腳本執行:設定PowerShell執行原則。
  • 開啟 PowerShell 轉譯:可讓您將 PowerShell 命令的輸入和輸出擷取到以文字為基礎的文字記錄。
  • 設定 Update-Help 的預設來源路徑:將可更新說明的來源設定為目錄,而不是因特網。

如需詳細資訊,請參閱 about_Group_Policy_Settings

PowerShell 7 包含組策略範本和 中的 $PSHOME安裝腳本。

組策略工具會使用系統管理範本檔案 (.admx.adml) 在使用者介面中填入原則設定。 這可讓系統管理員管理以登錄為基礎的原則設定。 腳本會在InstallPSCorePolicyDefinitions.ps1本機計算機上安裝PowerShell 管理員 istrative 範本。

Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
    Directory: C:\Program Files\PowerShell\7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/27/2020 12:38 AM          15861 InstallPSCorePolicyDefinitions.ps1
-a---           2/27/2020 12:28 AM           9675 PowerShellCoreExecutionPolicy.adml
-a---           2/27/2020 12:28 AM           6201 PowerShellCoreExecutionPolicy.admx

個別事件記錄檔

Windows PowerShell 和 PowerShell 7 會記錄事件,以分隔事件記錄檔。 使用下列命令來取得PowerShell記錄的清單。

Get-WinEvent -ListLog *PowerShell*

如需詳細資訊,請參閱 about_Logging_Windows

改善 Visual Studio Code 的編輯體驗

具有 PowerShell 延伸模組Visual Studio Code (VSCode) 是 PowerShell 7 支援的腳本環境。 Windows PowerShell 整合式腳本環境 (ISE) 僅支援 Windows PowerShell。

更新後的 PowerShell 擴充功能包括:

  • 新的 ISE 相容性模式
  • 整合式控制台中的 PSReadLine,包括語法醒目提示、多行編輯和返回搜尋
  • 穩定性和效能改善
  • 新的 CodeLens 整合
  • 改善路徑自動完成

若要更輕鬆地轉換至 Visual Studio Code,請使用命令選擇區提供的啟用 ISE 模式函式。 此函式會將 VSCode 切換成 ISE 樣式的版面配置。 ISE 樣式的版面配置可讓您在熟悉的用戶體驗中提供 PowerShell 的所有新功能和功能。

若要切換至新的 ISE 配置,請按 Ctrl+Shift+P 以開啟命令選擇區,輸入PowerShell並選取 PowerShell:啟用 ISE 模式。

若要將版面配置設定為原始版面配置,請開啟 [命令選擇區],選取 [PowerShell:停用 ISE 模式](還原為預設值)。

如需自定義 VSCode 配置給 ISE 的詳細資訊,請參閱 如何在 Visual Studio Code 中復寫 ISE 體驗

注意

沒有計劃使用新功能來更新ISE。 在最新版的 Windows 10 或 Windows Server 2019 和更新版本中,ISE 現在是使用者可卸載的功能。 沒有永久移除 ISE 的計劃。 PowerShell 小組及其合作夥伴著重於改善適用於 Visual Studio Code 的 PowerShell 擴充功能中的腳本體驗。

後續步驟

掌握有效移轉的知識, 立即安裝PowerShell 7