Windows Management Framework (WMF) 5.x 版本資訊
WMF 5.0 變更
- PowerShell 5.0 會新增結構化 資訊 數據流
- DSC 的改善包括四個新的 DSC 資源:
- WindowsFeatureSet
- WindowsOptionalFeatureSet
- ServiceSet
- ProcessSet
- 已新增 Just Enough Administration,以透過 PowerShell 遠端功能啟用以角色為基礎的系統管理
- PowerShell 5.0 擴充語言,以包含使用者定義的類別和列舉
- 改善 PowerShell ISE 中的偵錯功能,並新增遠端偵錯
- 已新增PowerShellGet和 PackageManagement 模組
- 增強的 PowerShell 腳本記錄和文字記錄
- 新增密碼編譯訊息語法 Cmdlet
- WMF 5.0 包含適用於 Windows 的 NetworkSwitchManager 模組
- 已新增 Microsoft.PowerShell.ODataUtils 模組
- 新增軟體清查記錄的支援 (SIL)
- 處理新的或更新 Cmdlet 以回應使用者要求和問題
WMF 5.1 變更
WMF 5.1 包含使用 Windows Server 2016 發行的 PowerShell、WMI、WinRM 和軟體清查記錄 (SIL) 元件。 WMF 5.1 可以安裝在 Windows 7、Windows 8.1、Windows Server 2008 R2、2012 和 2012 R2 上,並提供數項 WMF 5.0 改善,包括:
- 新的 Cmdlet
- PowerShellGet 改進包括強制執行已簽署的模組,以及安裝 JEA 模組
- PackageManagement 已新增容器、CBS 設定、EXE 型設定、CAB 套件的支援
- DSC 和 PowerShell 類別的偵錯改善
- 安全性增強功能,包括強制執行來自提取伺服器的目錄簽署模組,以及使用PowerShellGet Cmdlet時
- 回應一些使用者要求和問題
重要
在 Windows Server 2008 或 Windows 7 上安裝 WMF 5.1 之前,請先確認未安裝 WMF 3.0。 如需詳細資訊,請參閱 windows Server 2008 R2 SP1 和 Windows 7 SP1
PowerShell 版本
從 5.1 版開始,PowerShell 可在代表不同功能集和平臺相容性的不同版本中使用。
- Desktop Edition: 建置在 .NET Framework 上,並提供腳本和模組的相容性,以 Windows 的完整使用量版本執行之 PowerShell 版本為目標,例如 Server Core 和 Windows Desktop。
- Core 版本: 建置在 .NET Core 上,並提供與以 Nano Server 和 Windows IoT 等 Windows 使用量版本為目標之 PowerShell 版本的腳本和模組的相容性。
深入瞭解如何使用PowerShell版本
- 使用 $PSVersionTable 判斷 PowerShell 的執行版本
- 使用 PSEdition 參數的 CompatiblePSEditions 篩選結果 Get-Module
- 除非在相容的PowerShell版本上執行,否則請防止腳本執行
- 宣告模組與特定 PowerShell 版本的相容性
模組分析快取
從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
相同的 解析邏輯,而且不會傳回錯誤,其行為與Import-Module
和Import-DscResource
相同。
Pester 的改善
在 WMF 5.1 中,隨附於 PowerShell 的 Pester 版本已從 3.3.5 更新為 3.4.0。 此更新可為 Nano Server 上的 Pester 提供更好的行為。
您可以檢查 GitHub 存放庫中 CHANGELOG,以檢閱 Pest 中的變更。