Windows PowerShell 5.0 包含了重要的新功能,擴展了使用範圍、提升了可用性,並讓您能更輕鬆且全面地控制和管理基於 Windows 的環境。
Windows PowerShell 5.0 是向下相容的。 為 Windows PowerShell 4.0、Windows PowerShell 3.0 及 Windows PowerShell 2.0 設計的指令列、提供者、模組、snap-in、腳本、函式與設定檔,通常可在 Windows PowerShell 5.0 中無需更改即可運作。
安裝 Windows PowerShell
Windows PowerShell 5.0 預設安裝於 Windows Server 2016 技術預覽版及 Windows 10 中。
要在 Windows Server 2012 R2、Windows 8.1 Enterprise 或 Windows 8.1 Pro 上安裝 Windows PowerShell 5.0,請下載並安裝 Windows Management Framework 5.0。 安裝 Windows 管理框架 5.0 前,務必閱讀下載細節並符合所有系統需求。
在本主題中
- Windows PowerShell 4.0 DSC 更新資訊(KB 3000850
- Windows PowerShell 5.0 的新功能
- Windows PowerShell 4.0 的新功能
- Windows PowerShell 3.0 的新功能
2014 年 11 月的 Windows PowerShell 4.0 更新彙整(KB 3000850)
Windows PowerShell 4.0 中 Windows PowerShell 期望狀態配置(DSC)的許多更新與改進,皆可在 2014 年 11 月針對 Windows RT 8.1、Windows 8.1 及 Windows Server 2012 R2 (KB3000850)的更新整合中取得。 你可以透過在 Windows PowerShell 中執行 Get-Hotfix -Id KB3000850 來判斷系統是否安裝了 KB3000850。
PSDesiredStateConfiguration 模組中現有 cmdlet 的更新
- Get-DscResource 比較快(尤其是在 ISE 中)。
- Start-DscConfiguration 新增了一個參數 -UseExisting,會重新套用上一次套用的設定。
- Start-DscConfiguration -Force 已修正。
- Get-DscLocalConfigurationManager 會顯示更多關於引擎狀態的有用資訊。
- Test-DscConfiguration 現在會回傳電腦名稱以及 True 或 False。
- New-DSC Checksum 現在支援 UNC 路徑。
PSDesiredStateConfiguration 模組中的新 cmdlet
- Update-DSCConfiguration:執行隨需拉取伺服器檢查。
- Stop-dscConfiguration:停止已在執行的設定。
- Remove-DscConfigurationDocument:允許你在不同階段(待處理、上一或目前)移除設定文件。
語言增強
- DependsOn 現在支援複合資源。
- DependsOn 現在支援資源實例名稱中的數字。
- 節點運算式若被評估為空,則不再拋出錯誤。
- 當節點運算式值為空時所發生的錯誤已被修正。
- 呼叫配置的設定現在可以在 Windows PowerShell 主控台中運作。
拉力模式的強化
- 拉取模式現在支援所有 ZIP 檔案。
- AllowModuleOverwrite 現在運作正常。
韌性提升
- 新的 DebugMode 讓你可以重新載入資源模組。
- 若發生設定失敗,pending.mof 檔案不會被刪除。
- 當元組態設定損壞時,本地組態管理員(LCM)現在更具韌性。
診斷改進
- 當 LCM 將計時器設定到與你設定不同的設定時,會顯示警告。
- 錯誤日誌檔案現在包含 Windows PowerShell 資源的呼叫堆疊。
彈性提升
- LocalConfigurationManager 資源新增了一個屬性,稱為 ActionAfterReboot。
- ContinueConfiguration(預設值):目標節點重啟後自動恢復設定。
- StopConfiguration:節點重啟後,不要自動恢復設定。
- 一致性執行現在可以比拉取操作更頻繁發生,反之亦然。
- 版本控制支援:DSC 現在能辨識在新客戶端(隨 WMF 5.0 附帶)產生的文件。
- LocalConfigurationManager 資源新增了一個屬性,稱為 ActionAfterReboot。
錯誤預防改進
- 模組版本現在會在設定套用前強制執行。
- DebugPreference 現在已正確設定用於 Get、Set Test-TargetResource 呼叫。
憑證處理改進
- 若同時指定 憑證 與 PSDscAllowPlainTextPassword ,則會使用憑證。
- 憑證會被解密,即使是 Get-TargetResource。
- 元配置憑證會被加密和解密。
- PSCredentials 現在在嵌入物件中時會被解密。
內建資源改進
- 套件資源
- 不再安裝錯誤的套件(無論是本地還是網頁來源)。
- 現在支援 HTTPS。
- 套件 資源現在支援 HTTPS。
- Archive 資源 現在支援憑證管理。
- 套件資源
Windows PowerShell 5.0 的新功能
- Windows PowerShell 的新功能
- Windows PowerShell 期望狀態設定的新功能
- Windows PowerShell ISE 的新功能
- Windows PowerShell Web Services 的新功能
- Windows PowerShell 5.0 中值得注意的錯誤修正
Windows PowerShell 的新功能
從 Windows PowerShell 5.0 開始,你可以使用類別、形式語法和語意來開發,這些都與其他物件導向程式語言相似。 為了支援這項新功能,Windows PowerShell 語言中已新增類別、列舉及其他關鍵字。 欲了解更多關於類別操作的資訊,請參見 about_Classes。
Windows PowerShell 5.0 引入了一種新的結構化資訊流,你可以用它在腳本與呼叫者(或主機環境)之間傳輸結構化資料。 你現在可以用 Write-Host 將輸出輸出到資訊流中。 資訊流也適用於 PowerShell。串流、工作、排程工作和工作流程。 以下功能支援資訊流。
- 一個新的 Write-Information 指令檔,讓你能指定 Windows PowerShell 如何處理指令的資訊流資料。 Write-Host 是 Write-Information 的包裝器。 Write-Information 也是支援的工作流程活動。
- 兩個新的常見參數 InformationVariable 和 InformationAction,讓你決定指令中資訊流如何顯示。 InformationAction 的有效值為 SilentlyContinue、Stop、Continue、Inquire、Ignore 或 Suspend,其中 SilentlyContinue 為預設值。 InformationVariable 指定一個字串作為變數名稱,你希望儲存指令的 Write-Host 資料。
- 一個新的偏好變數 InformationPreference 指定你在 Windows PowerShell 會話中對資訊串流資料的預設偏好。 預設值為 SilentlyContinue。
- 新增了兩個工作流程共用參數 PSInformation 與 InformationAction。
- 當你使用 Format-Table 指令時,表格欄位會自動格式化,方法是評估流中通過的前 300 毫秒資料。
與 Microsoft Research 合作,新增了一個名為 ConvertFrom-String 的 cmdlet。 ConvertFrom-String 讓你能從文字字串內容中擷取並解析結構化物件。 更多資訊請參見 ConvertFrom-String。
一個新的 Convert-String 指令小程式會根據你在 -Example 參數中提供的範例自動格式化文字。
一個新模組 Microsoft.PowerShell.Archive 包含 cmdlet,允許你將檔案和資料夾壓縮成歸檔(也稱為 ZIP)檔案,從現有 ZIP 檔案解壓檔案,並更新壓縮中新版本的檔案。
新增一個模組 PackageManagement,讓你能在網路上發現並安裝軟體套件。 PackageManagement(前稱 OneGet)模組是現有套件管理器(也稱為套件提供者)的管理或多工器,用以統一 Windows 套件管理與單一 Windows PowerShell 介面。
一個新模組 PowerShellGet 讓你能在 PowerShell 畫廊或可透過執行 Register-PSRepository cmdlet 設定的內部模組倉庫中尋找、安裝、發布及更新模組與 DSC 資源。
新增了一個語言關鍵字 Hidden,用以指定成員(屬性或方法)預設不會在 Get-Member 結果中顯示(除非你加入 -Force 參數)。 標記為隱藏的屬性或方法也不會在 IntelliSense 結果中顯示,除非你所在的情境中該成員應該是可見的;例如,自動變數 $This 在類別方法中應該會顯示隱藏成員。
新項目、移除項目與 Get-ChildItem 已增強以支援建立和管理 符號連結。 New-Item 的 -ItemType 參數接受一個新值 SymbolicLink。 現在你可以透過執行 New-Item cmdlet 在一行內建立符號連結。
Get-ChildItem 也新增了一個新的 -Depth 參數,你可以搭配 -Recurse 參數來限制遞迴。 例如,Get-ChildItem -Recurse -Depth 2 會回傳目前資料夾、目前資料夾內所有子資料夾,以及子資料夾內所有資料夾的結果。
Copy-Item 現在允許你將檔案或資料夾從一個 Windows PowerShell 會話複製到另一個,這表示你可以將檔案複製到連接到遠端電腦的會話(包括執行 Nano Server、因此沒有其他介面的電腦)。 要複製檔案,請指定 PSSession ID 作為新 -FromSession 和 -ToSession 參數的值,並加上 -Path 和 -Destination 分別指定來源路徑和目的地。 例如,Copy-Item -Path c:\myFile.txt -ToSession $s -Destination d:\destinationFolder。
Windows PowerShell 的轉錄功能已改進,除了控制台主機(powershell.exe外,還適用於所有主機應用程式(例如 Windows PowerShell ISE)。 轉錄選項(包括啟用全系統逐字稿)可透過啟用「 開啟 PowerShell 轉錄 群組政策」設定來設定,該設定位於管理範本/Windows 元件/Windows PowerShell 中。
一項全新的詳細腳本追蹤功能,讓你能在系統上追蹤並分析 Windows PowerShell 腳本的使用情況。 啟用詳細腳本追蹤後,Windows PowerShell 會將所有腳本區塊記錄到 Windows 事件追蹤(ETW)事件日誌,稱為 Microsoft-Windows-PowerShell/Operational。
自 Windows PowerShell 5.0 起,新的密碼訊息語法指令小程式支援使用 IETF 標準格式進行內容加密與解密,以加密保護訊息,如 RFC5652 所記錄。 Get-CmsMessage、Protect-CMSMessage 及 Unprotect-CmsMessage 指令小程式已加入 Microsoft.PowerShell.Security 模組。
Microsoft.PowerShell.Utility 模組中的新指令集 Get-Runspace、Debug-Runspace、Get-RunspaceDebug、Enable-RunspaceDebug 和 Disable-RunspaceDebug,讓你能在執行空間設定除錯選項,並開始和停止執行空間除錯。 對於除錯任意的執行空間(也就是不是 Windows PowerShell 主控台或 Windows PowerShell ISE 會話預設的執行空間),Windows PowerShell 允許你在腳本中設定斷點,並且新增斷點會阻止腳本執行,直到你能附加除錯器來除錯執行空間腳本。 Windows PowerShell 腳本除錯器已新增對任意跑道空間的巢狀除錯支援。
Microsoft.PowerShell.Utility 模組新增了一個新的 Format-Hex cmdlet。 Format-Hex 可以讓你以十六進位格式查看文字或二進位資料。
Microsoft.PowerShell.Utility 模組新增了 Get-Clipboard 和 Set-Clipboard 的 cmdlet;它們簡化了內容與 Windows PowerShell 會話之間的傳輸。 剪貼簿的 cmdlets 支援圖片、音訊檔案、檔案清單及文字。
Microsoft.PowerShell.Management 模組新增了 Clear-RecycleBin 指令;此指令檔會清空回收筒,以儲存固定磁碟機,包含外接磁碟機。 預設情況下,你會被要求確認一個 Clear-RecycleBin 指令,因為 cmdlet 的 ConfirmImpact 屬性設定為 ConfirmImpact.High。
一個新的 cmdlet New-TemporaryFile,讓你能在腳本製作時建立暫存檔案。 預設情況下,新的暫存檔案會建立在
C:\Users\<user name>\AppData\Local\Temp。輸出檔、新增內容和 Set-Content 指令小程式現在有一個新的 -NoNewline 參數,該參數會在輸出後省略一行新行。
New-Guid 的 cmdlet 利用 .NET Framework Guid 類別來產生 GUID,這在撰寫腳本或 DSC 資源時非常有用。
由於檔案版本資訊可能具有誤導性,尤其是在檔案修補後,FileInfo 物件可使用新的 FileVersionRaw 與 ProductVersionRaw 腳本屬性。 例如,你可以執行以下指令來顯示這些屬性的值,powershell.exe,其中 $pid 包含 Windows PowerShell 執行中會話的程序 ID:
Get-Process -Id $pid -FileVersionInfo | Format-List *version* -Force新的 cmdlets Enter-PSHostProcess 和 Exit-PSHostProcess 讓你可以在與 Windows PowerShell 主控台目前執行的程序分開的程序中除錯 Windows PowerShell 腳本。 執行 Enter-PSHostProcess 輸入或附加特定程序 ID,然後執行 Get-Runspace 返回程序內的活動跑道空間。 當你完成程序內的腳本除錯後,執行 Exit-PSHostProcess 以脫離程序。
Microsoft.PowerShell.Utility 模組新增了一個新的 Wait-Debugger cmdlet。 你可以在執行下一個腳本前,先在除錯器中執行 Wait-Debugger 停止腳本。
Windows PowerShell 工作流程除錯器現在支援指令或分頁補全功能,並且可以除錯巢狀的工作流程函式。 你現在可以按 Ctrl+Break 在執行中的腳本、本地和遠端工作階段,以及工作流程腳本中輸入除錯器。
Microsoft.PowerShell.Core 模組新增了一個 Debug-Job 指令小檔,用於除錯 Windows PowerShell 工作流程、背景及遠端工作階段執行的工作腳本。
新增了一個狀態 AtBreakpoint,用於 Windows PowerShell 工作。 AtBreakpoint 狀態適用於工作執行包含設定斷點的腳本,且腳本已達到斷點。 當工作在除錯中斷點停止時,你必須執行 Debug-Job 指令本來除錯該工作。
Windows PowerShell 5.0 支援同一資料夾中多個版本的 Windows PowerShell 模組,並$PSModulePath。 ModuleSpecification 類別新增了 RequiredVersion 屬性,以幫助你取得所需的模組版本;此特性與 ModuleVersion 屬性互斥。 RequiredVersion 現已作為 Get-Module、Import-Module 及 Remove-Module cmdlet 的 FullyQualifiedName 參數值的一部分被支援。
你現在可以透過執行 Test-ModuleManifest cmdlet 來進行模組版本驗證。
Get-Command 指令小程式的結果現在會顯示一個版本欄位;CommandInfo 類別新增了 Version 屬性。 Get-Command 顯示來自同一模組多個版本的指令。 版本屬性同時也是 CmdletInfo 衍生類別的一部分:CmdletInfo 和 ApplicationInfo。
Get-Command 新增了一個參數 -ShowCommandInfo,會以 PSObject 的形式回傳 ShowCommand 資訊。 這對於在 Windows PowerShell ISE 中使用 Windows PowerShell 遠端執行 Show-Command 特別實用。 -ShowCommandInfo 參數取代了 Microsoft.PowerShell.Utility 模組中現有的 Get-SerializedCommand 函式,但 Get-SerializedCommand 腳本仍可用以支援下層腳本。
一個新的 Get-ItemPropertyValue 指令小程式可以讓你不用點符號就能取得屬性的值。 例如,在較舊版本的 Windows PowerShell 中,你可以執行以下指令取得 PowerShellEngine 登錄鍵的 Application Base 屬性值: (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase)。ApplicationBase。 從 Windows PowerShell 5.0 開始,你可以 Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name ApplicationBase。
Windows PowerShell 主控台現在使用語法著色,就像 Windows PowerShell ISE 一樣。
一個新的 NetworkSwitch 模組包含 cmdlet,讓你能對 Windows Server 2012 R2 標誌認證的網路交換器套用交換器、虛擬區域網路網(VLAN)及基本的第二層網路交換器埠設定。
FullyQualifiedName 參數已加入 Import-Module 與 Remove-Module cmdlet,以支援儲存同一模組的多個版本。
Save-Help、Update-Help、Import-PSSession、Export-PSSession 和 Get-Command 都有一個新的參數 FullyQualifiedModule,類型為 ModuleSpecification。 加入此參數,以完全限定名稱指定模組。
$PSVersionTable.PSVersion 的數值已更新為 5.0。
WMF 5.0(PowerShell 5.0)包含 Pester 模組。 Pester 是一個針對 PowerShell 的單元測試框架。 它提供幾個簡單易用的關鍵字,讓你能為腳本建立測試。
Windows PowerShell 期望狀態設定的新功能
- Windows PowerShell 語言增強功能允許你用類別定義 Windows PowerShell Desired State Configuration (DSC) 資源。 Import-DscResource 現在是一個真正的動態關鍵字;Windows PowerShell 會解析指定模組的根模組,搜尋包含 DscResource 屬性的類別。 你現在可以使用類別來定義 DSC 資源,模組資料夾中不需要 MOF 檔案或 DSCResource 子資料夾。 一個 Windows PowerShell 模組檔案可以包含多個 DSC 資源類別。
- 在 PSDesiredStateConfiguration 模組中的以下 cmdlet 中新增了一個參數 ThrottleLimit。 新增 ThrottleLimit 參數,指定你希望該指令同時運作的目標電腦或裝置數量。
- Get-DscConfiguration
- Get-DscConfigurationStatus
- Get-DscLocalConfigurationManager
- Restore-DscConfiguration
- Test-DscConfiguration
- Compare-DscConfiguration
- Publish-DscConfiguration
- Set-DscLocalConfigurationManager
- Start-DscConfiguration
- Update-DscConfiguration
- 透過集中式 DSC 錯誤報告,豐富的錯誤資訊不僅會記錄在事件日誌中,還能傳送至中央地點以便後續分析。 你可以利用這個中央位置來儲存環境中任何伺服器發生的 DSC 設定錯誤。 在元設定中定義報告伺服器後,所有錯誤會被傳送到報告伺服器,然後儲存在資料庫中。 無論目標節點是否設定從拉取伺服器拉取設定,都可以設定此功能。
- Windows PowerShell ISE 的改進簡化了 DSC 資源撰寫。 你現在可以做以下的事情。
- 在該區塊的空白行輸入 Ctrl+Space 時,列出配置或節點區塊內的所有 DSC 資源。
- 對列 舉 類型的資源屬性自動補全。
- 根據配置中其他資源實例,自動完成 DSC 資源的 DependsOn 屬性。
- 改進資源屬性值的分頁補全。
- 使用者現在可以透過在節點區塊上加入 PSDscRunAsCredential 屬性,以指定的憑證集合來執行資源。 例如,PSDscRunAsCredential = Get-Credential Contoso\DscUser。 此功能對於建立執行 Windows 安裝程式及可執行安裝程式、存取每位使用者登錄檔群,或執行其他非當前使用者情境的任務非常有用。
- 新增了 32 位元(基於 x86)的 Configuration 關鍵字支援。
- Windows PowerShell 現在支援 DSC 設定的自訂說明,透過在產生的設定函式中加入 [CmdletBinding()] 來定義。
- 新的 DscLocalConfigurationManager 屬性將設定區塊指定為元配置,用於配置 DSC 本地組態管理員。 此屬性限制組態僅包含配置 DSC 本地組態管理器的項目。 在處理過程中,此設定會產生一個 *.meta.mof 檔案,並透過執行 Set-DscLocalConfigurationManager cmdlet 傳送至相應的目標節點。
- Windows PowerShell 5.0 現在允許部分設定。 你可以將設定文件分段傳送到節點。 節點若要接收多個組態文件片段,必須先設定該節點的本地組態管理器以指定預期的片段
- 跨電腦同步是 Windows PowerShell 5.0 中 DSC 新增的功能。 利用內建的 WaitFor* 資源(WaitForAll、 WaitForAny 和 WaitForSome),你現在可以在設定執行時指定跨電腦的相依關係,無需外部協調。 這些資源透過 CIM 連線在 WS-Man 協定上提供節點間的同步。 設定可以等待另一台電腦的特定資源狀態改變。
- Just Enough Administration(JEA)是一項新的委派安全功能,利用 DSC 與 Windows PowerShell 受限的跑動空間,協助企業防範員工(無論有意或無意)資料遺失或資料外洩。 欲了解更多關於 JEA 的資訊,包括下載 xJEA DSC 資源的地點,請參閱 「Just Enough Administration」。
- 以下新指令小程式已加入 PSDesiredStateConfiguration 模組。
- 新的 Get-DscConfigurationStatus 指令檔會從目標節點獲取關於組態狀態的高階資訊。 你可以取得最後一個,或所有配置的狀態。
- 新的 Compare-DscConfiguration 指令小程式會將指定的配置與一個或多個目標節點的實際狀態進行比較。
- 新的 Publish-DscConfiguration 指令檔會將組態 MOF 檔案複製到目標節點,但不會套用該組態。 設定會在下一次一致性處理時套用,或執行 Update-DscConfiguration 指令檔時。
- 一個新的 Test-DscConfiguration 指令小程式可以讓你驗證結果的配置是否符合期望的配置,若配置符合,則回傳 True;若實際配置不符,則回傳 False。
- 新的 Update-DscConfiguration 指令碼會強制處理一個組態。 如果本地組態管理員處於拉取模式,指令碼會先從拉取伺服器取得設定,然後再套用。
Windows PowerShell ISE 的新功能
- 你現在可以在 Windows PowerShell ISE 的本地副本中編輯遠端 Windows PowerShell 腳本和檔案,方法是在儲存檔案的電腦上執行 Enter-PSSession 啟動遠端會話,然後在遠端電腦>上執行 PSEdit <路徑和檔名。 此功能簡化了儲存在 Windows Server 核心安裝選項中的 Windows PowerShell 檔案,因為 Windows PowerShell ISE 無法執行。
- Start-Transcript 指令小程式現已支援 Windows PowerShell ISE。
- 你現在可以在 Windows PowerShell ISE 中除錯遠端腳本。
- 一個新的選單指令「 Break All」(Ctrl +B)會入侵除錯器,支援本地及遠端執行的腳本。
Windows PowerShell Web Services(管理 OData IIS 擴充套件)的新功能
- 從 Windows PowerShell 5.0 開始,你可以根據特定 OData 端點所暴露的功能,透過執行新 Microsoft.PowerShell.OdataUtils 模組中的 Export-ODataEndpointProxy cmdlet,產生一組 Windows PowerShell 指令碼。
Windows PowerShell 5.0 中值得注意的錯誤修正
- Windows PowerShell 5.0 包含了新的 COM 實作,當你處理 COM 物件時,能帶來顯著的效能提升。
- Windows PowerShell 會話中第一個分頁完成的效能有顯著提升,分頁完成時間縮短了近 500 毫秒。
Windows PowerShell 4.0 的新功能
Windows PowerShell 4.0 是向下相容的。 為 Windows PowerShell 3.0 和 2.0 設計的指令集、提供者、模組、snap-in、腳本、函式與設定檔,在 Windows PowerShell 4.0 中無需更改即可運作。
Windows PowerShell 4.0 預設安裝於 Windows 8.1 與 Windows Server 2012 R2 上。 若要在 Windows 7 上安裝 Windows PowerShell 4.0(SP1)或 Windows Server 2008 R2,請下載並安裝 Windows Management Framework 4.0。 安裝 Windows 管理框架 4.0 前,務必閱讀下載細節並符合所有系統需求。
- Windows PowerShell 的新功能
- Windows PowerShell 整合腳本環境(ISE)的新功能
- Windows PowerShell 工作流程的新功能
- Windows PowerShell Web Services 的新功能
- Windows PowerShell 網頁存取的新功能
- Windows PowerShell 4.0 中值得注意的錯誤修正
Windows PowerShell 4.0 包含以下新功能。
Windows PowerShell 的新功能
- Windows PowerShell 期望狀態配置 (DSC)是 Windows PowerShell 4.0 中的一項新管理系統,能夠部署和管理軟體服務及其執行環境的設定資料。 欲了解更多 DSC 資訊,請參閱 「Windows PowerShell Desired State Configuration 入門」。
- Save-Help 現在允許你將幫助資料儲存在遠端電腦上的模組。 你可以用 Save-Help 從連接網路的客戶端下載模組說明(該模組不一定安裝所有你需要幫助的模組),然後將儲存的說明複製到遠端共享資料夾或沒有網路連線的遠端電腦。
- Windows PowerShell 除錯器已增強,允許除錯 Windows PowerShell 工作流程以及遠端電腦上執行的腳本。 Windows PowerShell 工作流程現在可以在腳本層級由 Windows PowerShell 命令列或 Windows PowerShell ISE 除錯。 Windows PowerShell 腳本,包括腳本工作流程,現在可以在遠端工作階段中除錯。 遠端除錯會被保留在 Windows PowerShell 遠端會話上,這些會話會先斷開連線,之後再重新連接。
- Register-ScheduledJob 與 Set-ScheduledJob 的 RunNow 參數,省去使用 Trigger 參數設定工作立即開始日期與時間的需求。
- Invoke-RestMethod 和 Invoke-WebRequest 現在可以用 Headers 參數設定所有標頭。 雖然這個參數一直存在,但它是網頁 cmdlet 中導致異常或錯誤的多個參數之一。
- Get-Module 新增了一個參數 FullQualifiedName,類型為 ModuleSpecification[]。 Get-Module 的 FullyQualifiedName 參數現在允許你用模組名稱、版本,以及可選的 GUID 來指定模組。
- Windows Server 2012 R2 的預設執行政策設定是 遠端簽約。 在 Windows 8.1 上,預設設定沒有改變。
- 從 Windows PowerShell 4.0 開始,支援使用動態方法名稱的方法呼叫。 你可以用變數儲存方法名稱,然後透過呼叫變數動態呼叫該方法。
- 當 PSElapsedTimeoutSec 工作流程共用參數指定的逾時期結束時,非同步工作流程工作不再被刪除。
- 新增參數 RepeatIndefinitely 已加入 New-JobTrigger 與 Set-JobTrigger 指令列。 這消除了重複執行排程工作無限期所需的 TimeSpan.MaxValue 參數 RepetitionDuration 值的必要。
- 在 Enable-JobTrigger 與 Disable-JobTrigger 指令列中新增了 Passthru 參數。 Passthru 參數會顯示由你的指令所建立或修改的任何物件。
- 在 Add-Computer 與 Remove-Computer cmdlet 中指定工作群組的參數名稱現在是一致的。 兩個指令檔現在都使用了 WorkgroupName 這個參數。
- 新增了一個通用參數 PipelineVariable。 PipelineVariable 允許你將管道指令(或管道指令的一部分)的結果儲存為可傳遞管道其餘部分的變數。
- 現在支援使用方法語法進行集合過濾。 這表示你現在可以用簡化語法過濾一組物件,類似於 Where() 或 Where-Object,格式化為方法呼叫。 以下是一個例子:(Get-Process).其中({$_.名稱 -match 'powershell'})
- Get-Process cmdlet 新增了一個 switch 參數 IncludeUserName。
- 新增了一個名為 Get-FileHash 的指令檔,能以多種格式回傳指定檔案的雜湊值。
- 在 Windows PowerShell 4.0 中,如果模組在其清單中使用 DefaultCommandPrefix 鍵,或使用者匯入帶有 Prefix 參數的模組,模組的 ExportedCommands 屬性會顯示模組中帶有前綴的指令。 當你使用模組限定語法 ModuleName\CommandName 執行指令時,指令名稱必須包含前綴。
- $PSVersionTable.PSVersion 的數值已更新至 4.0。
-
其中() 運算子行為已改變。
Collection.Where('property -match name')格式中已不再支援接受字串表達"Property -CompareOperator Value"式。 然而, Where() 運算子接受以腳本區塊格式的字串表達式;這功能至今仍被支援。
Windows PowerShell 整合腳本環境(ISE)的新功能
- Windows PowerShell ISE 支援 Windows PowerShell 工作流程除錯與遠端腳本除錯。
- 已針對 Windows PowerShell Desired 狀態設定 提供者和組態新增 IntelliSense 支援。
Windows PowerShell 工作流程的新功能
- 在迭代管線(如 System Center Orchestrator)中使用的情境下,新增了 PipelineVariable 通用參數的支援;也就是說,管線會直接從左到右執行指令,而不是像串流方式那樣穿插執行。
- 參數綁定已大幅強化,能在分頁完成情境之外運作,例如處理目前跑道空間中不存在的指令。
- Windows PowerShell 工作流程已新增對自訂容器活動的支援。 若活動參數為 Activity、 Activity[] (或為一般活動集合),且使用者已提供腳本區塊作為參數,Windows PowerShell 工作流程會將該腳本區塊轉換為 XAML,與一般 Windows PowerShell 腳本轉工作流程編譯相同。
- 當機後,Windows PowerShell 工作流程會自動重新連接到受管理節點。
- 你現在可以用 ThrottleLimit 屬性來限制 Foreach -Parallel 活動語句。
- ErrorAction 的共用參數有一個新的有效值 Suspend,專門用於工作流程。
- 如果沒有活躍的工作階段、進行中的工作,也沒有待處理的工作,工作流程端點現在會自動關閉。 此功能在自動關閉條件達成後,節省了作為工作流程伺服器的電腦資源。
Windows PowerShell Web Services 的新功能
- 當 Windows PowerShell Web Services(PSWS,也稱為 Management OData IIS 擴充套件)在執行指令檔時發生錯誤,呼叫者會回傳更詳細的錯誤訊息。 此外,錯誤代碼遵循 Windows Azure REST API 錯誤代碼指引。
- 端點現在可以定義 API 版本,並強制使用特定的 API 版本。 每當客戶端與伺服器間出現版本不符時,錯誤會同時顯示給客戶端和伺服器。
- 派遣結構的管理已透過自動產生結構中缺失欄位的值來簡化。 產生作為一個有用的起點,即使派遣結構不存在。
- PSWS 的型別處理已改進,支援使用與預設建構碼不同的建構函式,其行為類似於 Windows PowerShell 中的 PSTypeConverter 。 這讓你能用複雜類型搭配 PSWS。
- PSWS 現在允許在執行查詢時展開相關實例。 對於較大的二進位內容(如圖片、音訊或影片),傳輸成本相當可觀,因此最好不編碼地傳輸二進位資料。 PSWS 使用命名資源流進行傳輸,無需編碼。 命名的資源串流是 Edm.Stream 類型實體的屬性。 每個命名的資源串流都有獨立的 URI 用於 GET 或 UPDATE 操作。
- OData 動作現在提供了一種機制,可以在資源上呼叫非 CRUD(建立、讀取、更新和刪除)方法。 你可以透過向該動作定義的 URI 發送 HTTP POST 請求來呼叫該動作。 動作的參數在 POST 請求的正文中定義。
- 為了符合 Windows Azure 的指引,所有網址都應該簡化。 鍵 即區段 中包含的一項變更允許將單一鍵以區段形式表示。 請注意,使用多個鍵值的參考需要用逗號分隔的括號符號表示,與之前相同。
- 在 PSWS 這次版本之前,執行建立、更新或刪除操作的唯一方式,就是在頂層資源上呼叫 Post、Put(或刪除)操作。 本版本新增的 Contained Resource 操作讓使用者能在較少直接存取相同資源的情況下達成相同結果,彷彿這些資源已被限制在內。
Windows PowerShell 網頁存取的新功能
- 你可以在基於網頁的 Windows PowerShell Web Access 主控台中斷開並重新連接現有的會話。 網頁版主控台的 「儲存 」按鈕可以讓你在不刪除會話的情況下斷開連線,然後再重新連線。
- 預設參數可在登入頁面顯示。 要顯示預設參數,請在登入頁面的 可選連線設定 區,設定名為 web.config的檔案中所有設定的數值。你可以用 web.config 檔案設定所有可選的連線設定,除了第二組或替代的憑證外。
- 在 Windows Server 2012 R2 中,你可以遠端管理 Windows PowerShell 網頁存取的授權規則。 Add-PswaAuthorizationRule 與 Test-PswaAuthorizationRule 指令檔現在包含憑證參數,允許管理員從遠端電腦或 Windows PowerShell 網頁存取會話中管理授權規則。
- 你現在可以在單一瀏覽器會話中擁有多個 Windows PowerShell Web Access 會話,方法是為每個會話使用新的瀏覽器分頁。 你不再需要開啟新的瀏覽器會話,就能連接到網頁版 Windows PowerShell 主控台的新會話。
Windows PowerShell 4.0 中值得注意的錯誤修正
- Get-Counter 現在可以在法文版 Windows 中回傳包含撇號字元的計數器。
- 你現在可以在反序列化物件上查看 GetType 方法。
- #Requires 語句現在允許使用者在需要時需要管理員存取權限。
- Import-Csv 指令檔現在會忽略空白行。
- Windows PowerShell ISE 在執行 Invoke-WebRequest 指令時會使用過多記憶體的問題已被修正。
- Get-Module 現在會在版本欄位顯示模組版本。
- Remove-Item -Recurse 現在會如預期從子資料夾中移除項目。
- Get-Process 輸出物件新增了 UserName 屬性。
- Invoke-RestMethod 指令檔現在會回傳所有可用的結果。
- 新增成員 現在會對雜湊表生效,即使雜湊表尚未被存取。
- Select-Object -Expand 不再失敗或產生例外,若屬性值為空或為空。
- Get-Process 現在可以在管線中與其他指令一起使用,這些指令能從物件取得 ComputerName 屬性。
- ConvertTo-Json 和 ConvertFrom-Json 現在可以接受雙引號內的詞彙,且其錯誤訊息現在可本地化。
- Get-Job 現在會回傳任何已完成的排程工作,即使是在新的工作階段中。
- 在 Windows PowerShell 4.0 中使用 檔案系統 提供者掛載與卸載 VHD 的問題已被修正。 Windows PowerShell 現在能偵測到同一會話中掛載的新硬碟。
- 你不再需要明確載入 ScheduledJob 或 Workflow 模組來處理它們的工作類型。
- 在匯入定義巢狀工作流程的過程中,已進行效能提升;這個過程現在更快了。
Windows PowerShell 3.0 的新功能
Windows PowerShell 3.0 包含以下新功能。
- Windows PowerShell 工作流程
- Windows PowerShell 網頁存取
- 全新 Windows PowerShell ISE 功能
- 支援 Microsoft .NET Framework 4.0
- Windows 預安裝環境的支援
- 斷開會議
- 穩健的會話連接性
- 可更新的說明系統
- 強化線上協助
- CIM 整合
- 會話組態檔案
- 排程工作與任務排程器整合
- Windows PowerShell 語言增強
- 新核心指令
- 現有核心指令與提供者的改進
- 遠端模組匯入與發現
- 強化分頁補全
- 模組自動載入
- 模組體驗改進
- 簡化指令發現
- 改進日誌、診斷與群組政策支援
- 格式與輸出改進
- 提升主機主機體驗
- 新 Cmdlet 與託管 API
- 效能改善
- RunA 與共享主機支援
- 特殊字元處理改進
Windows PowerShell 工作流程
Windows PowerShell 工作流程將 Windows Workflow Foundation 的強大功能帶入 Windows PowerShell。
你可以用 XAML 或 Windows PowerShell 語言撰寫工作流程,並像執行 cmdlet 一樣執行。 指令 Get-Command 小程式會接收工作流程指令,指令 Get-Help 小程式則會獲得工作流程的協助。
工作流程是一連串多電腦管理活動,這些活動是長時間執行、可重複、頻繁、可平行化、可中斷、可暫停且可重啟的。 工作流程可以從故意或意外的中斷中恢復,例如網路中斷、Windows 重啟或停電。
工作流程也具備可攜性;它們可以匯出為 XAML 檔案,也可以匯入。 你可以撰寫自訂會話設定,讓受委託或下屬使用者能執行工作流程或活動。
以下是 Windows PowerShell 工作流程的優點
- 自動化有序且長期執行的任務。
- 遠端監控長期執行任務。 活動的狀態與進展隨時可見。
- 多電腦管理。 同時在數百個受管理節點上以工作流程方式執行任務。 Windows PowerShell 工作流程內建一個常見管理參數函式庫,例如 PSComputerName,能支援多電腦管理情境。
- 複雜流程的單一任務執行。 你可以將相關腳本結合,將整個端到端情境整合成單一工作流程。
- 持久性:工作流程會在作者定義的特定點儲存(或檢查點),讓你能從最後一個持續執行的任務(或檢查點)繼續工作流程,而不必從頭開始。
- 穩健。 自動故障復原。 工作流程能在計畫內外的重新啟動中存活。 你可以暫停工作流程執行,然後從最後一個持久點恢復工作流程。 工作流程作者可指定特定活動在一個或多個受管理節點失敗時重執行。
- 能夠斷開、重新連接,並在斷開連線的會話中執行。 使用者可以連接或斷開工作流程伺服器,但工作流程會持續運行。 你可以登出客戶端電腦或重新啟動客戶端電腦,並在不中斷工作流程的情況下監控另一台電腦的工作流程執行。
- 排程。 工作流程任務可以像任何 Windows PowerShell 指令碼或腳本一樣排程。
- 工作流程與連線限速。 工作流程執行與節點連接可被限速,從而促進可擴展性與高可用性情境。
Windows PowerShell Web 存取
Windows PowerShell 網頁存取是 Windows Server 2012 的一項功能,讓使用者能在網頁主控台中執行 Windows PowerShell 指令和腳本。 使用網頁主控台的裝置不需要安裝 Windows PowerShell、遠端管理軟體或瀏覽器外掛。 所需條件是正確設定的 Windows PowerShell 網頁存取閘道,以及支援 JavaScript 並接受 Cookie 的用戶端裝置瀏覽器。
更多資訊請參閱 部署 Windows PowerShell 網頁存取。
全新 Windows PowerShell ISE 功能
對於 Windows PowerShell 3.0,Windows PowerShell 整合腳本環境(ISE)具備多項新功能,包括 IntelliSense、Show-Command 視窗、統一的主控台窗格、片段、大括號匹配、展開與摺疊區塊、自動儲存、最近項目清單、豐富複製、區塊複製,以及完整支援撰寫 Windows PowerShell 腳本工作流程。 欲了解更多資訊,請參閱 about_Windows_PowerShell_ISE。
支援 Microsoft .NET Framework 4
Windows PowerShell 是基於 Common Language Runtime 4.0 架構。 指令長、腳本及工作流程作者可在 Windows PowerShell 中使用新的 Microsoft .NET Framework 4 類別,具備應用程式相容性與部署、管理擴充框架、平行運算、網路、Windows 通訊基礎及 Windows 工作流程基礎等功能。
Windows 預安裝環境的支援
Windows PowerShell 3.0 是 Windows 8 預安裝環境(Windows PE)4.0 中的一個可選元件。 Windows PE 是一種極簡作業系統,啟動一台沒有作業系統的電腦,並為安裝 Windows 做準備。 Windows PE 可用於分割與格式化硬碟、複製磁碟映像到電腦,以及從網路共享發起 Windows 設定。 Windows PowerShell 3.0 可用於 Windows PE 管理部署、診斷及復原情境。
斷開會議
從 Windows PowerShell 3.0 開始,使用 New-PSSession cmdlet 建立的持久使用者管理會話(「PSSessions」)儲存在遠端電腦上。 它們不再依賴於創建時的會話。
你現在可以從會話中斷開連線,而不會干擾會話中正在執行的指令。 你可以關閉會話並關掉電腦。 之後,你可以在同一台電腦或不同電腦上,從不同的工作階段重新連接該工作階段。
指令長的 Get-PSSessionComputerName 參數現在會取得所有連接到電腦的使用者會話,即使它們是在不同電腦的會話中啟動。 你可以連接會話,取得指令結果,啟動新指令,然後從會話中斷線。
新增 cmdlet 以支援 Disconnected Sessions 功能,包括 Disconnect-PSSession、 Connect-PSSession、 Receive-PSSession和 ,並且在管理 PSSessions 的 cmdlet 中加入了新參數,例如 cmdlet 的 Invoke-CommandInDisconnectedSession 參數。
斷線會話功能僅在連線的起始端(「用戶端」)與終止端(「伺服器」)端的電腦同時執行 Windows PowerShell 3.0 時才被支援。
穩健的會話連接性
Windows PowerShell 3.0 偵測用戶端與伺服器間意外的連線中斷,並嘗試自動恢復連線並恢復執行。 若無法在規定時間內重新建立用戶端與伺服器連線,使用者會收到通知並斷開連線。 在嘗試重新連線時,Windows PowerShell 會持續向使用者提供回饋。
如果已斷線的會話是用 InvokeCommand 啟動的,Windows PowerShell 會為已斷線的會話建立一個工作,方便重新連線並繼續執行。
這些功能提供更可靠且可恢復的遠端存取體驗,並允許使用者執行需要穩健工作階段的長時間任務,如工作流程。
可更新的說明系統
你現在可以下載模組中 cmdlets 更新的說明檔。 指令 Update-Help 小程式會識別最新的說明檔,從網路下載,解壓、驗證,並將檔案安裝到模組正確的語言專用目錄中。
要使用更新後的說明檔,只要輸入 Get-Help。 你不需要重啟 Windows 或 Windows PowerShell。 若要更新$pshome目錄中模組的說明,請以「以管理員身份執行」選項啟動 Windows PowerShell。
為了支援沒有網路連線的使用者以及防火牆後的使用者,新的 Save-Help 指令長程式會將幫助檔案下載到檔案系統目錄,例如檔案分享。 使用者接著 Update-Help 可以使用 cmdlet 從檔案分享中取得更新的說明檔案。
你可以用 Update-Help cmdlet 更新所有或特定模組在所有支援的 UI 文化中的說明檔。 你甚至可以在 Windows PowerShell 設定檔中放入 Update-Help 指令。
預設情況下,Windows PowerShell 每天不會超過一次下載模組的說明檔。
Windows 8 與 Windows Server 2012 模組不含說明檔案。 要下載最新的說明檔案,請輸入 Update-Help。 欲了解更多資訊,請輸入 Get-Help (無參數)或參見 about_Updatable_Help。
當電腦上未安裝 cmdlet 的說明檔時,該 Get-Help 指令長程式會顯示自動產生的說明。 自動產生的說明包含指令語法及使用 Update-Help cmdlet 下載說明檔的說明。
任何模組作者都可以支援其模組的可更新幫助。 你可以在模組中加入說明檔案,並使用 Updatable Help 來更新,或省略說明檔,使用 Updatable Help 來安裝。 欲了解更多關於支援可更新幫助的資訊,請參見 支援可更新的幫助。
強化線上協助
Windows PowerShell 線上說明對所有使用者來說都是寶貴的資源,但對於沒有或無法安裝更新說明檔的使用者尤其重要。
若要取得任何 Windows PowerShell 指令碼的線上協助,請輸入:
Get-Help <cmdlet-name> -Online
Windows PowerShell 會在你的預設網路瀏覽器中開啟線上版本的說明主題。
Windows PowerShell 3.0 中的 Get-Help -Online 功能現在更強大,因為它即使在未安裝指令長說明檔時也能運作。 Get-Help -Online 功能則從 HelpUri 的 cmdlets 與進階函數屬性中取得線上說明主題的 URI。
PS C:\>(Get-Command Get-ScheduledJob).HelpUri
https://go.microsoft.com/fwlink/?LinkID=223923
從 Windows PowerShell 3.0 開始,C# cmdlets 的作者可以透過在 cmdlet 類別上建立 HelpUri 屬性來填充 HelpUri 屬性。 進階函式的作者可以在 CmdletBinding 屬性上定義 HelpUri 屬性。 HelpUri 屬性的價值必須以「http」或「https」開頭。
你也可以在基於 XML 的 cmdlet 說明檔的第一個相關連結中加入 HelpUri 值,或功能中以評論為基礎的幫助連結指令。
欲了解更多關於支持線上幫助的資訊,請參閱 「支持線上協助」。
CIM 整合
Windows PowerShell 3.0 包含對通用資訊模型(CIM)的支援,該模型提供系統、網路、應用程式與服務管理資訊的共同定義,允許異質系統間交換管理資訊。 Windows PowerShell 3.0 支援 CIM,包括能根據新設或現有 CIM 類別撰寫 Windows PowerShell 指令碼、基於 cmdlet 定義 XML 檔案的指令,以及對 CIM .NET Framework 的支援。 API、CIM 管理 cmdlets 以及 WMI 2.0 提供者。
會話組態檔案
從 Windows PowerShell 3.0 開始,你可以用檔案設計自訂的會話設定。 新的會話設定檔讓你能判斷使用該會話設定的會話環境,包括哪些模組、腳本和格式檔案會載入會話,使用者可以使用哪些指令小程式和語言元素,可以執行哪些模組和腳本,以及他們能看到哪些變數。
你可以設計一個會話,讓使用者只能從某個特定模組執行 cmdlet,或是讓使用者擁有完整語言、存取所有模組,並能使用執行進階任務的腳本。
在先前版本的 Windows PowerShell 中,此層級的控制權僅限於能撰寫 C# 程式或複雜啟動腳本的人。 現在,電腦上管理員群組的任何成員都可以透過設定檔自訂會話設定。
若要建立會話組態檔,請使用 New-PSSessionConfigurationFile Cmdlet。 若要將會話設定檔套用到會話組態,請使用 Register-PSSessionConfiguration or 'Set-PSSessionConfiguration cmdlets。
欲了解更多資訊,請參閱 about_Session_Configuration_Files 和 New-PSSessionConfigurationFile。
排程工作與任務排程器整合
你現在可以在 Windows PowerShell 和任務排程器中排程並管理 Windows PowerShell 背景工作。
Windows PowerShell 排程工作是 Windows PowerShell 背景工作與任務排程器任務的實用混合體。
就像 Windows PowerShell 的背景工作一樣,排程工作是在背景非同步執行。
已完成的排程工作實例可利用工作指令(如 Start-Job 和 Get-Job)來管理。
與任務排程器的任務類似,你可以以一次性或重複排程執行排程工作,或回應動作或事件。 你可以在任務排程器中檢視和管理排程工作,視需要啟用或停用它們,執行它們或用作範本,並設定工作開始的條件。
此外,排程工作還附有一套客製化的指令小工具來管理。 這些 cmdlets 讓你可以建立、編輯、管理、停用和重新啟用排程工作,建立排程工作觸發器,以及設定排程工作選項。
關於排定工作詳情,請參見 about_Scheduled_Jobs。
Windows PowerShell 語言增強
Windows PowerShell 3.0 包含許多功能,旨在讓語言更簡單、更易使用,並避免常見錯誤。 改進內容包括屬性列舉、標量物件的計數與長度屬性、新的重定向運算子、$Using範圍修飾符、PSItem 自動變數、靈活的腳本格式、變數屬性、簡化屬性參數、數值指令名稱、Stop-Parsing 運算子、改良陣列分割、新增位元運算子、有序字典、PSCustomObject 鑄造,以及改進的註解式輔助功能。
新核心指令
Windows PowerShell 安裝中新增了 cmdlet,包括管理排程工作、斷開會話、CIM 整合以及可更新的說明系統(Updatable Help System)。
- CimCmdlets
- Get-CimAssociatedInstance
- Get-CimClass
- Get-CimInstance
- Get-CimSession
- Invoke-CimMethod
- New-CimInstance
- New-CimSession
- New-CimSessionOption
- Register-CimIndicationEvent
- Remove-CimInstance
- Remove-CimSession
- Set-CimInstance
- Microsoft.PowerShell.Core
- Connect-PSSession
- Disconnect-PSSession
- New-PSSessionConfigurationFile
- New-PSTransportOption
- Receive-PSSession
- Resume-Job
- Save-Help
- Suspend-Job
- Test-PSSessionConfigurationFile
- Update-Help
- Microsoft.PowerShell.Diagnostics
- New-WinEvent
- Microsoft.PowerShell.Management
- Get-ControlPanelItem
- 重新命名電腦
- Show-ControlPanelItem
- Microsoft.PowerShell.Utility
- ConvertFrom-Json (從Json轉換)
- 轉換為Json
- Get-TypeData
- Invoke-RestMethod(調用REST方法)
- Invoke-WebRequest
- Remove-TypeData
- Show-Command
- Unblock-File
- PSSchescheduleedJob
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob
- PSWorkflow
- New-PSWorkflowExecutionOption
- New-PSWorkflowSession
- PSWorkflowUtility
- Invoke-AsWorkflow
- 伊勢
- Get-IseSnippet
- Import-IseSnippet
- New-IseSnippet
現有核心指令與提供者的改進
Windows PowerShell 3.0 為現有指令匣新增功能,包括簡化語法,以及以下指令集的新參數:電腦指令集、CSV 指令集、Get-ChildItem、Get-Command、Get-Content、Get-History、Measure-Object、Security cmdlets、Select-Object、Select-String、Split-Path、Start-Process、Tee-Object、Test-Connection、Add-Member 及 WMI 指令集。
Windows PowerShell 服務提供者也大幅改進,包括支援管理網頁主機的安全套接層(SSL)憑證、憑證憑證、持久網路磁碟機,以及檔案系統磁碟機中的替代資料串流。
遠端模組匯入與發現
Windows PowerShell 3.0 擴充了遠端電腦上的模組發現、匯入及隱含遠端存取功能。 模組指令集會將模組存取遠端電腦,並透過 Windows PowerShell 遠端存取將模組匯入遠端或本地電腦。 新的 CIM 會話支援讓你能使用 CIM 和 WMI 來管理非 Windows 電腦,方法是將指令匯入本地電腦,這些指令會隱式執行於遠端電腦上。
更多資訊請參閱 cmdlet 和 cmdlet 的說明主題Get-ModuleImport-Module。
強化分頁補全
Windows PowerShell 主控台的 Tab 補全功能現在可以完成 cmdlet、參數、參數值、列舉、.NET Framework 類型、COM 物件、隱藏目錄等名稱。 分頁補全功能基於新的解析器與抽象語法樹重新撰寫,以支援更多情境,包括記憶體內解析樹與中線分頁補全。
模組自動載入
Get-Command指令長現在會取得電腦上所有模組的所有指令和函式,即使模組未匯入當前工作階段。
當你拿到需要的 cmdlet 後,可以直接使用,不用匯入任何模組。 現在只要你在模組中使用任何 cmdlet,Windows PowerShell 模組就會自動匯入。 你不再需要搜尋模組並匯入它來使用指令長。
模組的自動匯入會透過指令中的 cmdlet 觸發,無論是 Get-Command 執行無通行字的指令長,或 Get-Help 是執行無萬用字元的指令長。
你可以用 $PSModuleAutoLoadingPreference 偏好變數啟用、停用並設定模組的自動匯入。
欲了解更多資訊,請參閱about_Modules、about_Preference_Variables及 cmdlet 的說明主題Get-CommandImport-Module。
模組體驗改進
Windows PowerShell 3.0 為模組帶來進階功能支援,包括以下新功能。
- 個別模組的模組日誌(LogPipelineExecutionDetails)以及新的「開啟模組日誌」群組政策設定
- 擴展模組物件,揭露模組清單中的值
- 模組(包括巢狀模組)新增的 ExportedCommands 屬性,可結合所有類型的指令
- 改進了可用(未匯入)模組的發現,包括允許在同一指令中同時使用 Path 與 ListAvailable 參數
- 模組中新增 DefaultCommandPrefix 鍵,避免名稱衝突且不更改模組程式碼。
- 改進模組需求,包括具備版本與 GUID 的完整合格必修模組,以及自動匯入所需模組
- 指令令操作更安靜、更流暢
New-ModuleManifest。 - #Requires 的新 模組 參數
- 改良 cmdlet,
Import-Module包含 MinimumVersion 與 RequiredVersion 參數。
簡化指令發現
你不再需要匯入所有模組來發現你工作階段可用的指令。 在 Windows PowerShell 3.0 中, Get-Command 指令長會接收所有已安裝模組的所有指令。 而且,如果你使用指令,匯出指令的模組會自動匯入你的工作階段。
這個新 Show-Command 指令是專為初學者設計的。 你可以在視窗裡搜尋指令。 你可以查看所有指令或依模組篩選,點擊按鈕匯入模組,使用文字框和下拉清單建立有效指令,然後複製或執行該指令,且永遠不會離開視窗。
改進日誌、診斷與群組政策支援
Windows PowerShell 3.0 透過支援 Windows 事件追蹤(ETW)日誌、模組可編輯的 LogPipelineExecutionDetails 屬性,以及「開啟模組日誌」群組原則設定,來提升指令與模組的日誌與追蹤支援。 你現在可以透過顯示日誌屬性,從日誌細節中取得參數值。
格式與輸出改進
新的格式與輸出改進提升了所有 Windows PowerShell 使用者的效率。 改進包括所有串流的輸出重定向、增強的 Update-Type 指令集可動態新增型別,無需 Format.ps1xml 檔案、輸出字換行、自訂物件的預設格式屬性、 PSCustomObject 類型、WMI 物件與異質物件的改進格式化,以及支援方法重載的發現。
提升主機主機體驗
Windows PowerShell 控制台主機程式在 Windows PowerShell 3.0 中具備新功能,包括預設的單執行緒公寓。 檔案總管新增的「使用 PowerShell 執行」選項,讓你只需右鍵點擊即可在無限制的會話中執行腳本。 新的主控台主機啟動邏輯能更快啟動 Windows PowerShell,而新字型則能讓你個人化熟悉的主控台視窗體驗。
新 Cmdlet 與託管 API
新的 Cmdlet API 與 Hosting API 包含公開的進階語法樹(AST)API,以及管線分頁、巢狀管線、跑動空間池、分頁補全、Windows RT、Obsolete cmdlet 屬性,以及 FunctionInfo 物件的動詞與名詞屬性等 API。
效能改進
Windows PowerShell 的顯著效能提升來自於基於 .NET Framework 4 中動態執行時語言(DLR)的新語言解析器,並結合執行時腳本編譯、引擎可靠性提升,以及演算法 Get-ChildItem 的變更,這些都提升了效能,尤其是在搜尋網路共享時。
RunA 與共享主機支援
Windows PowerShell 3.0 包含對 RunAs 與 Shared Host 功能的支援。
為 Windows PowerShell 工作流程設計的 RunAs 功能,允許會話組態的使用者建立以共享使用者帳號權限執行的會話。 這讓權限較低的使用者能以管理員權限執行特定指令和腳本,並減少新增資深使用者到管理員群組的需求。
SharedHost 功能允許多位使用者在多台電腦上同時連接工作流程會話,並監控工作流程的進度。 使用者可以在一台電腦上啟動工作流程,然後在另一台電腦上連接工作流程會話,而不必斷開該會話與原電腦的連線。 使用者必須擁有相同的權限並使用相同的會話設定。 欲了解更多資訊,請參閱《Windows PowerShell 工作流程入門》中的「運行 Windows PowerShell 工作流程」。
特殊字元處理改進
為了提升 Windows PowerShell 3.0 解釋並正確處理特殊字元的能力,處理路徑中特殊字元的 LiteralPath 參數幾乎適用於所有帶有 Path 參數的 cmdlet,包括新 Update-HelpSave-Help cmdlet。 解析器還包含特殊邏輯,以改善檔案名稱與路徑中反向刻劃字元(`)及方括號的處理。