虛擬桌面最佳化工具 (VDOT) 是一組主要基於文字的工具,可將設定應用於 Windows 作業系統,旨在提高效能。效能提升體現在整體啟動時間、首次登入時間、後續登入時間以及使用者會話期間的可用性。
VDOT 工具源自於對本地虛擬桌面基礎架構 (VDI) 多年的效能調整。其中一些 VDI 實作未連接 Internet,或僅連接有限的 Internet,導致 Windows 的某些特性和/或功能無法正常運作。那些可以以受支援的方式停用或刪除的項目而不是運行非功能性組件。結果是啟動、登入速度更快,使用者會話過程更流暢。
後來,當 Azure 虛擬桌面 (AVD) 出現時,VDOT 工具經過精心審查,並以不會降低使用者介面、減少功能或以任何方式損害 AVD 會話主機的方式支援 AVD。從 Microsoft Windows 和 Azure 虛擬桌面產品群組接收並實施了意見。
由於 VDOT 工具現在已存在,因此它與多種系統相容。它適用於 VDI、AVD、獨立 Windows、Windows Server(有一些注意事項),有些最佳化甚至適用於 Windows 365 產品。
此工具中的最佳化設置是減少計算活動的潛在設置,從而增加每台主機的使用者密度。在每個各自的環境中測試最佳化設定並根據需要調整設定非常重要。
確定要停用、刪除或設定為政策的內容的 VDOT 設定檔位於對應作業系統版本資料夾(例如「2009」)中基於文字的 .JSON 檔案中。此工具用於確定是否套用設定的 JSON 參數是'VDIState' 。如果對應 .JSON 檔案中的「VDIState」參數設定為「已停用」 ,則將套用最佳化設定。如果「VDIState」設定為其他值,則不會套用該設定。
筆記
該腳本需要幾分鐘才能完成。總運行時間將在最後的狀態輸出訊息中顯示。當腳本完全運行完畢後,會出現重新啟動的提示。等待此提示以確認腳本已成功完成。需要重新啟動,因為目前會話中無法停止多個專案。
PowerShell 中的「-verbose」參數指示腳本在腳本執行時提供描述性輸出。
到目前為止,您可以執行以下命令:
.Windows_VDOT.ps1 -Verbose -AcceptEula
並且將運行一組核心優化。現在,如果您執行上述命令,您會收到一條返回訊息:
未來的等效功能是:
.Windows_VDOT.ps1 -Optimizations All -Verbose -AcceptEula
。
這項變更是在新增更多類別的最佳化時發生的,其中一些最佳化可能不適合所有人,因此新的最佳化被新增到名為AdvancedOptimizations的新參數集中。新的參數集包含Edge Chromium 最佳化、刪除 Internet Explorer 11 有效負載以及刪除內建 OneDrive 應用程式的功能。透過 AdvancedOptimizations 參數集,您可以執行剛才提到的一項或全部最佳化。
Windows 11 在某些方面向各種設定管理工具報告與 Windows 10 相同。目前(截至 22 年 7 月 29 日)「ReleaseID」值為「2009」。在「ReleaseID」編號更改之前,所有新的最佳化都將包含在「2009」資料夾下的「Configuration Files」資料夾中。因此,2009 資料夾設定檔適用於 Windows 10 以及 Windows 11。
截至 2024 年 6 月 14 日,VDOT 的當前版本已在 Windows 11 23H2 和 Windows 11 當前 Insider 版本上進行了測試。可能包含適用於Windows 的一個或另一個特定環或SKU 的設定。在這種情況下,如果嘗試刪除不存在的應用程序,則會顯示錯誤並且腳本將繼續。活動記錄在 Windows 事件日誌中以供日後參考。
截至 2022 年 7 月 29 日,Windows 10 中 Edge 的目前版本是 Microsoft Edge(基於 Chromium)。有一組特定於新 Edge 的策略範本檔案。 VDOT 所使用的所有策略設定均記錄在Windows 11 2023 更新 (23H2) 的群組原則設定參考電子表格中
VDOT 工具現在有以下針對 Microsoft Edge 的最佳化選項:
無論 Windows 版本為何,AppxPackages.json 清單現在都將「 VDIState 」設定為「 Unchanged 」。原因是微軟沒有針對所有環境的「推薦」應用程式清單。在每種情況下,如果要刪除通用 Windows 平台 (UWP) 應用程序,請將“VDIState”值從“Unchanged ”變更為“Disabled” 。
筆記
VDOT 工具不僅會刪除「AllUsers」的 UWP 應用程序,還會刪除應用程式負載。一旦刪除 UWP 應用有效負載,就無法將其重新配置到該系統。重新配置已刪除的應用程式負載的唯一方法是重置裝置、重新安裝或重新映像。
如果連接到互聯網,用戶仍然可以透過應用程式商店應用程式重新安裝 VDOT 刪除的應用程式。如果未連接互聯網,則無法重新安裝應用程式。這就是為什麼 VDOT 不刪除 Store 應用程序,我們也不建議刪除 Store 應用程式。這是一篇關於商店應用程式的文章。
| ✏注意|有一項服務不應停用,除非是在「氣隙」環境或阻止存取 Microsoft 內容交付網路 (CDN) 的其他環境中。該服務稱為「Microsoft Store 安裝服務」。如果停用此服務,Windows 中的應用程式商店元件將無法更新 UWP 應用程式和依賴項,這可能會導致漏洞。如果組織主動更新 UWP 應用程式及其相依性,則可以例外。手動更新UWP需取得各元件應用安裝包,以及套用依賴元件套件。這些可以透過 Endpoint Manager 或 Intune 等元件進行捆綁和提供。
VDOT 工具有多個參數傳遞到主 PowerShell 檔案“Windows_VDOT.ps1”,以提供安裝粒度。用於精確控制應用哪些最佳化的兩個參數是:
-Optimizations
-AdvancedOptimizations
結果是您可以運行上面列表中包含的任意多個、任意幾個、甚至一個子參數。以下是針對特定最佳化類別執行 VDOT 工具的兩個範例。
.Windows_VDOT.ps1 -Optimizations AppxPackages -AcceptEula -Verbose
.Windows_VDOT.ps1 -AdvancedOptimizations Edge, AppxPackages -AcceptEula -Verbose
.Windows_VDOT.ps1 -Optimizations All -AdvancedOptimizations All -AcceptEULA -Verbose
我們新增了刪除內建 OneDrive 應用程式的功能。例如,刪除 OneDrive 應用程式適用於氣隙雲。有一個關聯的 OneDrive 應用程式同步,可以在 AppxPackages 最佳化類別中刪除。 OneDrive 應用程式可以重新新增。用於刪除 OneDrive 應用程式的子參數位於參數「-AdvancedOptimizations」中。刪除 OneDrive 應用程式不是預設設置,只能透過選擇以下兩個選項之一來啟動:
.Windows_VDOT.ps1 - 進階最佳化RemoveOneDrive
.Windows_VDOT.ps1 - 全部進階最佳化
由於 Internet Explorer 11 已正式停用,我們新增了從系統中刪除 IE11 負載的選項。子參數是RemoveLegacyIE
,包含在-AdvancedOptimizations
參數中。由於刪除 IE11 有效負載不是預設設置,因此您可以透過以下兩種方式之一指定其刪除:
.Windows_VDOT.ps1 - 進階最佳化RemoveLegacyIE
.Windows_VDOT.ps1 - 全部進階最佳化
VDOT 在 Server 20xx 上運作良好,但如果指定了每個參數,則會產生大量非錯誤錯誤訊息。 Server 2025 之前沒有 UWP 應用程式。
.Windows_VDOT.ps1 -Windows 版本 2009
PowerShell:執行執行檔
刪除項目
LGPO
設定服務
刪除項目
2.2.1.7.2 GlobalFolderOptionsVista 元素
Windows 10 發布訊息
Windows 11 發布訊息
筆記
我們已完全棄用 LGPO.exe 的使用。
注意:此腳本只需幾分鐘即可完成。總運行時間將在最後的狀態輸出訊息中顯示。
當腳本完全運行完畢後,會出現重新啟動的提示。等待此提示以確認腳本已成功完成。
此外,PowerShell 中的「-verbose」參數指示腳本在腳本執行時提供描述性輸出。
在將接收最佳化的裝置上:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
這允許 PowerShell 腳本執行,但僅限於目前執行的應用程式處於開啟狀態。
.Windows_VDOT.ps1 -Optimizations All -Verbose
這將運行帶有詳細輸出的所有標準最佳化,但必須手動接受 EULA。
.Windows_VDOT.ps1 -Optimizations All -Verbose -AcceptEula
這將運行帶有詳細輸出的所有標準最佳化,並自動接受 Eula(用於腳本運行)
.Windows_VDOT.ps1 -Optimizations All -AdvancedOptimizations Edge -Verbose -AcceptEULA
這將運行所有標準最佳化、Edge 瀏覽器高級最佳化、詳細輸出並自動接受 Eula。
.Windows_VDOT.ps1 -Optimizations AppxPackages -AcceptEULA
這將僅運行 AppxPackages 並自動接受 EULA
.Windows_VDOT.ps1 -Optimizations All -AdvancedOptimizations All -Verbose -AcceptEULA -Restart
這將運行每個 VDOT 優化、詳細輸出、自動接受 Eula,並在 VDOT 結束時重新啟動設備。
筆記
VDOT 工具在運作時決定作業系統版本。您可以使用“-WindowsVersion”參數指定一組不同的設定檔。
完成後,您應該會看到重新啟動的提示。您不必立即重新啟動,但建議這樣做。
SYSPREP(Windows 系統準備工具)(2022 年 8 月 27 日)
您應該在 Sysprep 之前還是之後運行 VDOT?答案是要么,也許兩者兼而有之。 「兩者」答案是因為您可以隨時重新運行VDOT,並且不會發生任何更改,除非設定已恢復、應用程式已重新安裝等。刪除。部署該映像後,「開始」功能表上會出現一個 OneDrive 連結。如果您可以在 SYSPREP 之後運行 VDOT,則不會發生這種情況。
Windows 無法檢查憑證資訊 (01/17/2020)
重要提示:停用以下設定後,Windows 無法檢查憑證資訊 (CRL)
本機電腦策略電腦設定管理範本系統Internet通訊管理Internet通訊設定
以下設定已從 VDOT 中刪除:
關閉自動根證書更新
停用「CDPSvc」可能會導致 SystemSettings.exe 崩潰 (01/27/2020)
最近發現了一個關於「CDPSvc」的新問題。如果服務已停用,並且新使用者登入電腦然後開啟「系統設定」以查看顯示設置,「SystemSettings.exe」將崩潰並在事件日誌中記錄錯誤,代碼為「致命應用程式退出」。
「Win10_1909_ServicesDisable.txt」中「CDPSvc」的設定現在保持不變。
O365 無法聯繫授權伺服器 (04/20/2020)
以前,VDOT 腳本在此位置的本地策略設定被設定為停用:
本機電腦策略電腦設定管理範本系統Internet通訊管理Internet通訊設定
關閉 Windows 網路連線狀態指示器活動測試
停用主動測試後,Office 365 無法聯絡其授權服務,因此不會執行任何 Office 應用程式。在包含的 LGPO 配置中,此設定已變更回「未配置」 。
某些應用程式在雲端環境中沒有可見邊框 (04/22/2020)
在某些虛擬環境中,例如 Azure Windows 虛擬桌面,某些應用程式視窗將沒有邊框。 Windows 檔案總管就是一個例子。您可以透過開啟寫字板和檔案總管來複製這一點,然後四處移動,並注意您可能看不到一個應用程式開始而另一個應用程式結束的邊框。
最近新增的最佳化之一更改了視覺效果設定(在系統屬性中找到)以減少動畫和效果,同時仍然保持良好的使用者體驗。
- “平滑螢幕字體”
- “在滑鼠指標下顯示陰影”
- “在窗戶下方顯示陰影”
這些使用者設定將在視窗周圍啟用陰影效果(如檔案總管),以便應用程式的邊框現在可見。
這些設定將寫入預設用戶設定檔註冊表配置單元,因此僅適用於在執行這些最佳化之後建立設定檔的用戶,並且在此裝置上。
應用程式運行,即使應用程式尚未運行 (04/29/2020)
即使用戶尚未啟動應用程序,多個內建 UWP 應用程式(例如 Skype、電話和照片)也會啟動進程並在後台運行。在單一電腦上,這幾乎是零影響,但在多會話 Windows 上,這可能是稍大的影響問題。 “設置”應用程式中的“後台應用程式”下方有一個設置,可讓您根據每個使用者控制此行為。但是,除了完全卸載該應用程式之外,目前無法將這種行為變更為全域設定。
如果您想在映像中保留一個或多個應用程序,並且仍然控制後台行為,您可以編輯預設使用者註冊表配置單元並設定以下設定:
「HKCUSoftwareMicrosoftWindowsCurrentVersionBackgroundAccessApplicationsMicrosoft.Windows.Photos_8wekyb3d8bbwe /v 已停用/t REG_DWORD /d 1 /f “HKCUSoftwareMicrosoftWindowsCurrentVersionBackgroundAccessApplications/HKCUSoftwareMicrosoftWindows DisabledByUser /t REG_DWORD /d 1 /f "HKCUSoftwareMicrosoftWindowsCurrentVersionBackgroundAccessApplicationsMicrosoft.SkypeApp_kzf8qxf38zg5c /v 停用/t REGware_DWORD / . SkypeApp_kzf8qxf38zg5c /v DisabledByUser /t REG_DWORD /d 1 /f "HKCUSoftwareMicrosoftWindowsCurrentVersionBackgroundAccessApplicationsMicrosoft.YourPhone_8wekyb3CurrentVersionBackgroundAccessApplicationsMicrosoft.YourPhone_8wekyb3CurrentVersionBackgroundAccessApplicationsMicrosoft.YourPhone_8wekyb3CurrentVersionBackgroundAccessApplicationsMicrosoft。YourPhone_8wekyb3 CurrentVersion BackgroundAccessApplicationsMicrosoft.YourPhone_8wekyb3d8bbwe /v DisabledByUser /t REG_DWORD /d 1 /f
您也可以使用群組原則首選項設定這些設置,並且應在登出並重新登入或 Gpupdate 刷新後生效。
Windows 更新無法運作 (05/11/2020)
使用本機原則設定中包含的設定(在處理這些腳本期間將還原到目標),如果您嘗試手動執行 Windows Update,Windows 可能會報告錯誤。
這些設定位於這些腳本中的原因是,如果您將這些設定部署到連接到 Internet 的目標,Windows 更新可能會在會話主機被主動利用時嘗試安裝更新。虛擬桌面環境通常控制 Windows 更新僅在維護時段內允許,或根本不執行,而是部署新主機。
此問題的最新解決方案是將“UsoSvc”設定回預設起始值“manual” 。或者,編輯“Services.json”並將“UsoSvc”的“VDIState”更改為“unchanged” 。此外,本機原則設定已更新,Windows 更新設定與預設設定保持不變。
從這些腳本的 2004 版本開始,已棄用磁碟清理精靈 (Cleamgr.exe)。 DCW 已接近生命週期結束,但有時也會在腳本運行期間「掛起」。相反,一些基本的磁碟清理已合併到“Windows_VDOT.ps1”腳本中。已刪除日誌、追蹤和事件日誌檔案。如果您希望維護日誌文件,您可以編輯 .PS1 腳本並刪除這些條目。
有幾份報告稱,應用優化設定以及可能的其他操作後,「開始」功能表出現問題。最近,我們透過執行 1909 年至 2004 年的功能更新,能夠重現「開始」功能表的問題,其中 1909 會話主機已就位進行了最佳化設定。該問題可能是由於在本地或在 FSLogix 等設定檔解決方案中「最佳化」使用者設定檔而出現的。然後,功能更新過程會在此過程中對 Appx 套件進行一些操作,從而導致使用者的「開始」功能表中出現孤立的項目。
- 建立一個腳本來修復「開始」功能表,方法是將以下內容複製到文字文件,將其另存為.CMD 或.BAT 文件,然後以互動方式或登入腳本(通常不需要提升)將其提供給受影響的用戶。
start /wait taskkill /IM StartMenuExperienceHost.exe /F rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyAC " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyAppData " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyLocalCache " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyLocalState " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyRoamingState " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewySettings " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewySystemAppData " rd /S /Q " %UserProfile% AppdataLocalPackagesMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyTempState " Start C:WindowsSystemAppsMicrosoft.Windows.StartMenuExperienceHost_cw5n1h2txyewyStartMenuExperienceHost.exe
- 使用適當的“-WindowsVersion”參數重新運行 VDOT(例如 2004)。
[注意]這不僅會在某些情況下修復“開始”選單,還有一些特定於之前可能未應用的特定版本的設定。
OneDrive 本機原則設定阻止自動 OneDrive 登入 (01/27/2021)
此工具中設置了 OneDrive 的預設設置,其中包含以下詳細資訊:
Computer ConfigurationAdministrative TemplatesWindows ComponentsOneDrive
"Prevent OneDrive from generating network traffic until the user signs in to OneDrive"
預設狀態:未配置
優化工具狀態:啟用最近也報告了與此設定相關的另一個問題。某些 Office 應用程式會「掛起」幾秒鐘或更長時間,直到 OneDrive 同步完成。這可能與這個設定有關。因此,將此設定恢復為預設狀態
"not configured"
。這種特定的政策設定其實是一種偏好。您可以透過注意設定圖示上的「向下箭頭」覆蓋來確認這一點。恢復設定的一個好方法是使用群組原則將設定變更回預設值。如果您必須為每個使用者執行此操作,則該過程可能會更加複雜。
從「任務視窗」登出時掛起(2021 年 4 月 16 日)
我們收到報告稱,當主機配置了多種語言時,任務視窗在登出時掛起。初步測試表明,這可能是腳本禁用一個或多個使用者模式服務的結果。有問題的服務是:
-CDPSvc
-CDP用戶服務這兩個“每個用戶”服務的“VDIState”設定已從“禁用”更改為“未更改”。
優化後 Snip & Sketch 無法運作(2021 年 5 月 25 日)
運行 VDOT 優化後,可以啟動“Snip & Sketch”UWP 應用程序,但單擊執行新的捕獲不起作用(沒有任何反應)。此外,當您按一下「Snip & Sketch」時,應用程式事件日誌中會記錄一條錯誤,類似於以下內容:
Faulting application name: ScreenClippingHost.exe, version: 2001.22012.0.2020, time stamp: 0x5ff501a5
Faulting module name: ScreenClipping.dll, version: 2001.22012.0.2020, time stamp: 0x5ff4fde8
Exception code: 0x80000003
Fault offset: 0x000000000001b92d
這已在最近的版本中得到解決。
重新安裝 Appx 軟體包的注意事項
如果您發現已刪除 UWP 包並且現在需要將其恢復,最簡單的方法是打開 Microsoft Store 應用程式並蒐索該應用程序,或者單擊或複製該應用程式的 URL 並將其貼上到 Web 瀏覽器中包含在“AppxPackages.json”設定檔中。
要先防止特定的 UWP 應用程式被刪除,請編輯“AppxPackages.json”配置文件,搜尋該應用程序,然後將該應用程式條目的“VDIState”從“已停用”更改為其他任何內容,例如“不變'。
此範例程式碼僅供說明之用,不適用於生產環境。
本範例程式碼和任何相關資訊均以「現況」提供,不提供任何明示或暗示的保證,包括但不限於適銷性和/或特定用途適用性的暗示保證。我們授予您非排他性、免版稅的權利,以使用和修改範例程式碼以及複製和分發範例程式碼的目標程式碼形式,前提是您同意:(i) 不使用我們的名稱、標誌或商標行銷您嵌入範例程式碼的軟體產品; (ii) 在嵌入範例程式碼的軟體產品上包含有效的版權聲明; (iii) 就因使用或分發範例程式碼而產生或導致的任何索賠或訴訟(包括律師費)對我們和我們的供應商進行賠償、使其免受損害並為我們和我們的供應商辯護。
Microsoft 提供的程式設計範例僅供說明之用,不提供任何明示或暗示的保證,包括但不限於適銷性和/或特定用途適用性的暗示保證。
此範例假定您熟悉所示範的程式語言以及用於建立和偵錯過程的工具。 Microsoft 支援專業人員可以協助解釋特定流程的功能,但他們不會修改這些範例以提供附加功能或建置流程來滿足您的特定需求。如果您的程式設計經驗有限,您可能需要聯絡 Microsoft 認證合作夥伴或撥打 Microsoft 收費諮詢專線 (800) 936-5200。