門門精通:找出那單一映像

使用 WDS 驅動程式資料庫可幫助您將以映像為主的 Windows 部署策略精簡為單純的案例。

葛列格 · 希爾茲

大約 15 年前,我創建了我的第一個 Windows 部署映射。 那已成為過去。 回想起來,基於映射的部署中最困難的部分是為 DOS 引導盤找到合適的 NDIS 網路驅動程式。

幾年以後,到了 1999 年,我所在公司的總工程師陷入了困境。 他需要在非常緊迫的期限內構建大量新的桌面環境。 在資源短缺且可以嘗試各種方式的情況下,我和他打賭:如果我能夠在一個月內構建 300 個桌面環境,他就提升我擔任伺服器管理員。 我使用 Symantec 的 Ghost 映射技術作為秘密武器,結果比最終期限提前了整整一個星期時間。 之後不久,我成了公司歷史上最年輕的伺服器管理員。

對許多人來說,“構建桌面環境”的實踐與早期相比並無太大改進。 自動映射部署顯著地加快了這一過程。 我們在部署成百上千個桌面時的速度幾乎與交付桌面的速度一樣快。 有一些變化會讓您感到非常費力,因為它們更加複雜,但同時一些新的自動化級別又非常具有吸引力。

其中兩個變化最為顯著。 第一個是用於創建 Windows 映射的傳統整體化方法發生了演變。 取而代之的是分層方法,大約兩年前我已在 2009 年 12 月的專欄文章“分層部署 Windows 桌面方法案例”中進行了討論。

分層方法將 Windows 作業系統的元件拆分到分離的層中,以便您靈活地插入所需的任何配置。 事實上,如果您操作正確,可能永遠不需要再對桌面進行故障排除。 在設置了適當的自動化功能後,重新安裝桌面比進行故障排除更快。 Microsoft 提供的免費部署工具可説明您完成大部分工作,我在 2010 年 8 月的專欄文章“故障排除特性”中已介紹過。

第二個變化是分層方法的基礎:可在任何地方部署的單一映射。

驅動程式差異

使用單一映射部署在很長時間內都很難實現。 許多問題都是由於所有桌上型電腦和可擕式電腦之間的驅動程式集差異造成的。 例如,HP Pavilion Elite 桌上型電腦與 HP Pavilion dv7t 可擕式電腦使用的驅動程式不同。 因此,我們需要多個映射進行作業系統部署,每一個映射都用於各個不同的驅動程式配置。

所有這些都隨著 Windows Server 2008 R2 中的 Windows 部署服務 (WDS) 的出現而發生了變化。 如果您當前使用早期版本的 Windows Server 進行 WDS 部署,請考慮升級到此新版本。 此新版本的功能一定會令您倍感欣喜。

The Windows Deployment Services Drivers node

圖 1 Windows 部署服務驅動程式節點

在 WDS 的眾多改進中,最核心的改進是增加了一項用於創建可安裝在驅動程式節點下的任何地方的映射的新功能。 圖 1顯示了有關 WDS 主控台中的該節點的圖片。

這個新的驅動程式節點完全改變了遊戲規則。 您現在可以填充 Windows 安裝可搜索到的驅動程式資料庫。 該資料庫不只是針對一個桌上型電腦或可擕式電腦配置的驅動程式集,它是一個用於存儲所有硬體的所有驅動程式的位置。 使用內置的 Windows 隨插即用功能,任何 Windows 安裝都可以使用此自訂資料庫來查找與任何硬體對應的驅動程式。

此功能通過相同的隨插即用體系結構來啟用,通過該體系結構,您在插入新 USB 硬碟驅動器或數碼相機後,即可注意到 Windows 會查找這些設備的驅動程式。 有關此自動過程的詳細資訊,可以閱讀我的新書“Automating Windows 7 Installation for Desktop and VDI Environments(桌面和 VDI 環境的 Windows 7 安裝自動化)”(請參閱第 2 章中的“Plug and Play:Awesome for Windows Installations(隨插即用:Windows 安裝的最佳拍檔)”,其仲介紹了這一過程)。

插:令人敬畏的 Windows 安裝

在 Windows 安裝過程中,Microsoft 隨插即用的強大功能得到充分發揮。 您已經知道隨插即用是一項用來檢測要連接的新硬體的服務。 此服務在檢測到新硬體時會將該硬體元件的特徵與可用的驅動程式進行匹配。 如果找到匹配項,將自動安裝合適的驅動程式,這樣硬體便可供使用了。

雖然您經常在插入新設備時看到隨插即用操作,不過該服務在安裝過程中也會運行。 在安裝過程中,Windows 將調用隨插即用來檢測安裝硬體。 如果有合適的驅動程式可用,就會安裝它。 如果沒有可用的驅動程式,Windows 將使用通用驅動程式(如果可用)。 最後,您需要的是一種使自訂驅動程式在安裝過程中可用的機制。 如果這些驅動程式可用,Windows 將執行其餘操作。

Add Driver Package Wizard

圖 2 添加驅動程式包嚮導

這個“機制”基本上就是新的 WDS 驅動程式節點。 在 WDS 中,按右鍵“驅動程式”,然後選擇“添加驅動程式包”。 您將看到一個類似于圖 2的螢幕。 添加驅動程式包時,您需要將這些驅動程式解包為最基本的格式。 此嚮導將查找驅動程式 INF 檔和關聯的 CAT、SYS、DLL,以及該 INF 檔完成安裝所需的任何其他檔。

An unpacked NIC driver for an HP laptop

圖 3 適用于 HP 可擕式電腦的解包後的 NIC 驅動程式

解包這些驅動程式的實際過程因它們最初打包方式的不同而異。 大多數都至少需要解壓縮。 例如,HP 通過一個自解壓縮的 EXE 檔分發驅動程式,您可以從支援網站下載該檔。

請不要按兩下此 EXE。 請使用 WinZip 或 7-Zip 等協力廠商解壓縮工具來解包驅動程式檔。 結果可能與圖 3 所示內容類別似,其中顯示了圖 2中的嚮導查找的 INF 檔。 將該嚮導指向圖 3中的位置可自動將驅動程式插入 WDS 驅動程式資料庫。

A look at the available Driver Packages.

圖 4 查看可用的驅動程式包

INF 檔實際上是有關如何安裝驅動程式所需的任何內容的一系列說明。 某些 INF 檔實際安裝多個驅動程式。 這就是為什麼您可以在嚮導的下一個螢幕(請參見圖 4)中選擇或取消選擇要添加的驅動程式。 選擇所需的驅動程式並繼續完成嚮導的其餘頁面,將這些驅動程式添加到驅動程式組中。

自動添加驅動程式

使用這些步驟添加驅動程式是填充資料庫的一種簡便方法。 不過,增添了一項功能,它可以使此工具發揮到極致。 大多數 IT 團隊都將內容存儲在純 IT 伺服器上或進行共用。 共用可能包括一些資料夾(其中包含應用程式的 ISO 檔以及經常使用的工具),還可能包括一個子資料夾(其中全部是您這麼多年來收集的驅動程式)。

A large group of drivers

圖 5 大量驅動程式

再看一下圖 2,注意選中了哪個選項按鈕。 第二個選項按鈕“從資料夾中選擇所有驅動程式包”是見證奇跡的地方。 它公開了一種功能強大的方法,可以一次添加 IT 共用子資料夾(儘管沒有專門指出,也包括其中的每個子資料夾)中的所有驅動程式。

選中此選項,將“添加驅動程式包嚮導”指向 IT 共用子資料夾,並注意嚮導會自動插入您這麼多年來收集的所有驅動程式。 顯然,需要使用前面所述的過程解包這些驅動程式。

完成此步驟之後,嘗試使用 WDS 部署 Windows 映射。 Windows 安裝應將每個設備的 GUID 與某個關聯的驅動程式配對。 對於找到的每個配對,將自動安裝對應的驅動程式。

按篩選器和組分離

插入設備的驅動程式時,可創建 26 個單獨的驅動程式包。 每個套裝程式都稍有不同。 正如您在圖 5中看到的,其中的某些套裝程式針對不同的處理器體系結構。 其他設備可能需要多個驅動程式來實現不同的功能。 按右鍵任何套裝程式,選擇“屬性”,然後查看出現的“驅動程式”選項卡,瞭解每個套裝程式打算安裝的確切驅動程式的詳細資訊。

最好先為所有驅動程式創建一個驅動程式組。 大多數部署團隊不需要進一步的操作。 但是,偶爾會出現有些驅動程式運行不佳的情況。 隨插即用可能會為設備獲取錯誤的驅動程式,或者驅動程式可能具有 WDS 無法自行決定的特殊硬體需求。

當 Windows 部署完成後,如果設備無法工作或者在裝置管理員中顯示錯誤,您就瞭解到發生了這種情況。 您可能需要分隔驅動程式,以便更方便地進行管理和查看。 每個驅動程式組中的篩選器和組可説明實現這一點。

您將注意到,圖 1中已存在一個名為 DriverGroup1 的組。 通過按右鍵“驅動程式”並選擇“添加驅動程式組”,可以創建新組。 創建驅動程式組後,可應用到該組的硬體篩選器和映射篩選器更有價值。

Applying a Manufacturing filter to a group

圖 6 對組應用製造商資訊篩選器

硬體篩選器將驅動程式組的內容限制為特定硬體特徵。 圖 6顯示了如何創建一個可將驅動程式組的安裝僅限為 HP 硬體的製造商篩選器。 還有一些針對 Bios 供應商、Bios 版本、主機殼類型和 UUID 的篩選器。

查找這些值需要執行一些前期工作。 必須已安裝作業系統,這樣只需要一會兒即可獲取這些值。 您可以使用下列 Windows PowerShell 命令來收集每個篩選器需要的資訊(請注意,必須準確輸入每個篩選器的值才能使其工作):

  • **製造商:**Get WmiObject Win32_ComputerSystemProduct 供應商
  • **Bios 供應商:**Get WmiObject Win32_Bios 製造商
  • **Bios 版本:**Get WmiObject Win32_Bios 版本
  • **主機殼類型:**Get WmiObject Win32_SystemEnclosure ChassisTypes
  • **UUID:**Get WmiObject Win32_ComputerSystemProduct UUID

您將需要一個查閱資料表來轉換主機殼類型查詢中的資訊。 該查詢報告一個與系統主機殼類型對應的整數值。 WDS 篩選器不使用此值。 事實上,它使用與該值關聯的標籤。 圖 7顯示了您所需要的主機殼類型值與標籤之間的映射。

價值 主機殼類型標籤
1 其他
2 未知
3 桌面
4 超薄桌上型電腦
5 比薩盒
6 小型主機
7 主機
8 便攜型主機
9 可擕式電腦
10 筆記本
11 手持設備
12 擴展塢
13 多功能一體
14 亞筆記本
15 超輕薄筆記本
16 微型筆記本
17 主系統底盤
18 擴展底盤
19 副底盤
20 匯流排擴展底盤
21 週邊底盤
22 存儲底盤
23 機架安裝底盤
24 封閉式 PC

圖 7 主機殼類型值和標籤。

映射篩選器的工作方式有所不同。 與硬體篩選器不同,映射篩選器將值與部署映射的特徵進行比較。 相應的比較資訊從附加到 WIM 映射檔的中繼資料收集。

映射篩選器有三種類型:作業系統版本、作業系統修訂版和作業系統語言。 遺憾的是,收集這些類型的值需要三種完全不同且非常落後的機制:

  • **OS 版本:**收集正確的 OS 版本,需要構建從內 WDS 的 WIM 圖像的屬性。 在 WDS 中,按右鍵要部署的映射並查看“屬性”,然後按一下“版本”選項卡。 請記下映射版本旁邊的值。 此值的格式類似于 6.1.7600。 接下來,按一下 Service Pack 級別項名稱並記住該值。 Windows 7 不服務包的情況下,此值為 0。 將此值添加到以前的值,以句點分隔的結束。 最終的格式類似于 6.1.7600.0。 將此最終值輸入到篩選器中。
  • **OS 版:**匯出您要部署的檔,按右鍵圖像,然後選擇匯出圖像的圖像。 將該映射匯出到檔,然後在已提升許可權的命令提示符處運行命令dism /Mount-Wim /WimFile:<pathToWimFile> /index:1 /MountDir:<targetFolder>。 此命令用於裝載 WIM 檔,使下一個命令能夠收集所需的資訊。 運行命令dism /image:<targetFolder> /Get-CurrentEdition以返回當前修訂版的值。 將該值輸入到篩選器中。 完成後,可以卸載 WIM 並進行處理。
  • **作業系統語言:這是特別具有挑戰性。 首先,運行有點複雜的 Windows PowerShell 命令[convert]::ToString((Get-WMIObject Win32_OperatingSystem OSLanguage | Select-Object -ExpandPropertyOSLanguage), 16)。 此命令收集 OSLanguagevalue 的整數值並將它轉換為十六進位。 將得到的十六進位值與您在此處找到的區域性名稱進行匹配。

There is an Applicability setting for each Driver Group

圖 8 每個驅動程式組都有“適用性”設置

特殊用途

開始填充驅動程式組資料庫時,還有一項設置值得注意。 每個驅動程式組都有一個“適用性”設置,可在“驅動程式組屬性”的“常規”選項卡下找到(請參見圖 8)。 您通常使用此設置來安裝與用戶端硬體匹配的驅動程式包。 此設置指示隨插即用在安裝期間僅安裝系統上的設備的驅動程式。 考慮將此設置作為預設設置。

組中的所有驅動程式包都有一項備用設置。 下麵介紹它的工作原理:考慮您某天可能連接 USB 硬碟驅動器、數碼相機或其他設備。 這些設備也需要驅動程式。 為這些以後使用的驅動程式創建一個驅動程式組,然後將適用性設置為安裝任何內容,意味著已為這種可能性做好準備。 連接設備時,驅動程式已處於可用狀態,可以使用。

引導驅動程式注入

驅動程式組資料庫僅對於安裝映射是完全自動化的。 在某些桌上型電腦和可擕式電腦上,如果沒有特殊的驅動程式,WinPE 將無法引導或安裝 Windows。 其中包括配備非標準硬碟驅動器的電腦。 有問題的網卡或臨時視訊卡也可能會出現這種情況。

The Add Driver Packages to Boot Image Wizard

圖 9 將驅動程式包添加到引導映射嚮導。

引導映射與安裝映射不同,不能自動執行。 在使用引導映射之前,需要專門在其中注入自訂驅動程式。 通過按右鍵引導映射,然後選擇“將驅動程式包添加到映射”,可以在“引導映射”節點下執行此操作。 啟動該嚮導時,將會轉到圖 9所示的頁面。

此嚮導將自動進行篩選,只顯示 WinPE 需要的驅動程式。 您還可以在嚮導頁的上半部分中調整搜索詞。 按一下“搜索套裝程式”將返回符合篩選條件的潛在驅動程式清單。 選擇要添加的驅動程式,然後繼續完成嚮導。 此過程需要一些時間才能完成。

執行此操作時務必小心。 正如我提到的,隨插即用會混淆 GUID 與驅動程式之間的映射。 當即插即用運行時,您可能會發現 WinPE 尚未啟動開始安裝所需的設備。 這意味著,您注入了產生混淆的驅動程式。 通常,僅添加使 WinPE 正常工作絕對必要的最少驅動程式。

注入導致 WinPE 混淆的驅動程式時,請停止正在執行的操作並重新創建核心引導映射。 安裝備用驅動程式,直到您找到可在所有設備上工作的合適驅動程式集。 嘗試對 WinPE 進行故障排除是一個非常複雜的過程,比僅重新創建映射然後重新開始需要更多的時間。

分層基礎

轉換到分層後,桌面部署將成為一項非常簡單的任務,您可以騰出時間來執行所有更令人興奮的 IT 活動。 不過,這只是奠定了基礎。 您很快可以添加其他技術(例如自動使用者資料移轉、打包和流式應用程式以及其他中間選擇),進一步自動化該過程。 您今天就可以實現未來的完全自動化作業系統部署。 更為可喜的是,您可以使用 Microsoft 提供的免費工具。

使用即點即用功能進行作業系統部署不再是憧憬,今天即可實現。 當然其中涉及一些設置工作,某些情況下需要進行大量設置。 先期多投入一點精力會在以後從自動化中受益匪淺,一直到很遠很遠的未來。

Greg Shields

**葛列格 · 希爾茲**MVP,是在集中的技術合作夥伴。 ConcentratedTech.com 在獲取更多的盾牌的多面手提示和技巧。

相關內容