共用方式為


about_Windows_Powershell_5.1

簡短描述

描述 Windows PowerShell 5.1 中包含的新功能。

詳細描述

Windows PowerShell 5.1 包含可擴充其使用、改善可用性的重要新功能,並可讓您更輕鬆且全面地控制及管理以 Windows 為基礎的環境。

Windows PowerShell 5.1 與回溯相容。 針對 Windows PowerShell 4.0、Windows PowerShell 3.0 和 Windows PowerShell 2.0 所設計的 Cmdlet、提供者、模組、嵌入式管理單元、腳本、函式和配置檔,通常會在 Windows PowerShell 5.1 中運作,而不需要變更。

  • 新的 Cmdlet:本機使用者和群組;Get-ComputerInfo
  • PowerShellGet 改進包括強制執行已簽署的模組,以及安裝 JEA 模組
  • PackageManagement 已新增容器、CBS 設定、EXE 型設定、CAB 套件的支援
  • DSC 和 PowerShell 類別的偵錯改善
  • 安全性增強功能,包括強制執行來自提取伺服器的目錄簽署模組,以及使用PowerShellGet Cmdlet時
  • 回應一些使用者要求和問題

Windows PowerShell 5.1 預設會在 Windows Server 2016 版和更新版本和 Windows 用戶端版本 10 和更新版本上安裝。

若要在舊版 Windows 上安裝 Windows PowerShell 5.1,請參閱 安裝和設定 WMF 5.1。 安裝 Windows Management Framework 5.1 之前,請務必先閱讀下載詳細數據,並符合所有系統需求。

您也可以閱讀 Windows PowerShell 新功能中的 Windows PowerShell 5.1 變更。

PowerShell 版本

從 5.1 版開始,PowerShell 提供代表各種功能集和平台相容性的不同版本。

  • Desktop Edition︰建置在 .NET Framework 上,並與 Server Core 和 Windows Desktop 等完整版 Windows 上執行之目標 PowerShell 版本的指令碼和模組相容。
  • Core Edition︰建置在 .NET Core 上,並與 Nano Server 和 Windows IoT 等縮減版 Windows 上執行之目標 PowerShell 版本的指令碼和模組相容。

深入瞭解如何使用PowerShell版本

目錄 Cmdlet

Microsoft.PowerShell.Security 模組中已新增兩個新的 Cmdlet。 這些 Cmdlet 會產生並驗證 Windows 目錄檔案。

New-FileCatalog

New-FileCatalog 建立一組資料夾和檔案的 Windows 目錄檔案。 此目錄檔案包含指定路徑中所有檔案的哈希。 用戶可以散發資料夾集,以及代表這些資料夾的對應目錄檔案。 這項資訊有助於驗證自目錄建立時間以來是否對資料夾進行任何變更。

New-FileCatalog [-CatalogFilePath] <string> [[-Path] <string[]>]
 [-CatalogVersion <int>] [-WhatIf] [-Confirm] [<CommonParameters>]

支援類別目錄版本 1 和 2。 第 1 版會使用 SHA1 哈希演算法來建立檔案哈希;第 2 版使用 SHA256。 您應該使用目錄第 2 版。

若要驗證類別目錄檔案的完整性(上述範例中的 Pester.cat),請使用 Set-AuthenticodeSignature Cmdlet 簽署它。

Test-FileCatalog

Test-FileCatalog 會驗證代表一組資料夾的目錄。

Test-FileCatalog [-Detailed] [-FilesToSkip <String[]>]
 [-CatalogFilePath] <String> [[-Path] <String[]>]
 [-WhatIf] [-Confirm] [<CommonParameters>]

此 Cmdlet 會比較目錄中所有檔案哈希及其相對路徑,以及磁碟上的檔案。 如果它偵測到檔案哈希與路徑之間的任何不符,則會將狀態傳回為 ValidationFailed。 使用者可以使用 Detailed 參數擷取所有這些資訊。 它也會在 Signature 屬性中顯示目錄的簽署狀態,這相當於在目錄檔案上呼叫 Get-AuthenticodeSignature Cmdlet。 使用者也可以使用 FilesToSkip 參數在驗證期間略過任何檔案。

模組分析快取

從WMF 5.1 開始,PowerShell 可控制用來快取模組相關數據的檔案,例如其導出的命令。

根據預設,此快取會儲存在 檔案 ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache中。 在搜尋命令時,通常會在啟動時讀取快取,而且會在匯入模組之後,於背景線程上寫入。

若要變更快取的預設位置,請在啟動 PowerShell 之前設定 $env:PSModuleAnalysisCachePath 環境變數。 此環境變數的變更只會影響子進程。 此值應該會命名PowerShell有權建立和寫入檔案的完整路徑(包括檔名)。 若要停用檔案快取,請將此值設定為無效的位置,例如:

$env:PSModuleAnalysisCachePath = 'nul'

這會設定無效裝置的路徑。 如果 PowerShell 無法寫入路徑,則不會傳回錯誤,但您可以使用追蹤程式查看錯誤報告:

Trace-Command -PSHost -Name Modules -Expression {
  Import-Module Microsoft.PowerShell.Management -Force
}

寫出快取時,PowerShell 會檢查已不存在的模組,以避免不必要的大型快取。 您可以使用下列設定來停用檢查:

$env:PSDisableModuleAnalysisCacheCleanup = 1

設定此環境變數會在目前的進程中立即生效。

指定模組版本

在 WMF 5.1 中, using module 的行為與 PowerShell 中的其他模組相關建構相同。 之前,您無法指定特定的模組版本。 如果有多個版本存在,這會導致錯誤。

在 WMF 5.1 中:

  • 您可以使用 ModuleSpecification 建構函式 (Hashtable) 。 這個哈希表的格式與 Get-Module -FullyQualifiedName相同。

    範例: using module @{ModuleName = 'PSReadLine'; RequiredVersion = '1.1'}

  • 如果模組有多個版本,PowerShell 會使用Import-Module 相同的解析邏輯,而且不會傳回錯誤。

Pester 的改善

在 WMF 5.1 中,隨附於 PowerShell 的 Pester 版本已從 3.3.5 更新為 3.4.0。 您可以檢查 GitHub 存放庫中的 CHANGELOG ,以檢閱 3.3.5 至 3.4.0 版的變更。

關鍵字

Windows PowerShell 5.1 的新功能