共用方式為


桌面檔案使用 Windows PE 進行 PC 修復

Wes Miller

我之前在專欄中曾說過,起初我們只將 Windows PE 視為部署環境的工具。如同所有優良產品一樣,Windows PE 的功能已演進,不再侷限於此。客戶 (最初是 OEM) 想要建置一個用於製造及使用者自行修復的解決方案,因此多家公司生產了

Windows® PE 的解決方案,來滿足這兩個需求。

今日大部分修復工具的基礎,都是透過運用部署程序來將系統復原成先前的良好狀態。Windows Vista® 比 Windows XP 更能簡化復原程序,並內建影像支援 (請參閱本期 TechNet Magazine 中,Christine Fok 所撰寫關於 Windows Vista 備份技術的文章)。

在本月專欄中,我將說明如何在 Windows PE 上建置自己的修復解決方案。Windows PE 2.0 是 Windows 自動化安裝套件 (AIK) 的免費元件,適用於所有 Windows 授權使用者。此授權不僅適用於部署,也適用於使用 Windows PE 進行修復和疑難排解。

當然,您還必須考量自己的自訂與調整需求,但我會在本文中探討無論是部署 Windows XP 或 Windows Vista 都需要注意的通則。如果您熟悉影像處理,您大概已經曉得大部分的通則。

所有 Windows PE 修復解決方案都包括以下主要元件:

  • Windows PE
  • 影像公用程式
  • 相關的指令碼 (或正式的應用程式)

您可以選擇是否要包含 SQL 支援與 Active Directory® 服務介面 (ADSI) 支援。透過 SQL 連線,您可以用間接方式建置解決方案,讓系統包含各種「用料表」來定義安裝所需的項目。同樣地,連線到 Active Directory 對於處理每部電腦的帳戶物件 (MAO) 屬性也很方便。

要注意的是,Microsoft 不支援在 Windows PE 中包含 ADSI,但是好幾篇線上文件都有說明怎麼做,而且只要步驟正確,效果很不錯。如果您不想要這麼做,可以僅加入 SQL 支援,並在其中建置 Windows PE 修復工具的工作流程。如需 ADSI 屬性,您可以讓包含排程工作的伺服器系統查詢相同的 SQL Server™,然後透過 ADSI 查詢 Active Directory -- 本質上是以通過 (Pass-Through) 的方式運作。

這個解決方案不甚完美,而且需要一些指令碼或其他自動化作業來補強,但是這項設定可讓您從 Windows PE 進行與 Active Directory 的互動。

請注意,您也可以使用 LDIFDE 公用程式,從 Windows PE 內部讀取 Active Directory 資訊 (如需詳細資訊,請參閱此主題的知識庫文章,網址是:support.microsoft.com/kb/237677)。例如,您可以使用下列命令:

ldifde -m -f x:\output.ldf -b <username> <domain netbiosname> <accountPassword> -s 
<DC or domain name> -d "DC=contoso,DC=com" -r "(&(objectclass=<computerclassname>)
(netbuisname=<mycomputername>))" - l "<attributename>"

輸入此命令將會從指定的電腦物件擷取屬性到 x:\output.ldf,並在此剖析輸出。

SKU、位元及語言

您必須考慮您要部署的 Windows 的版本、架構及語言。在特定區域的小型組織中,您可能只會部署一個作業系統 (Windows XP 或 Windows Vista),或是使用已經預先安裝在新電腦上的作業系統。即使有的話,您也可能還不會部署很多 x64 Windows 系統。而且您很可能只需要支援一種語言。但是當您的組織越大越全球化,可能就會涉及更多架構、版本和設定。

我在之前的專欄中曾經提到,在相同的 Windows Imaging Format (WIM) 檔案中可以儲存 x64 和 x86 磁碟區影像,但是這無法節省空間。若您要建置修復解決方案,而且必須兼顧這兩種架構,那麼您應該分別在不同的 WIM 中儲存各個解決方案。同樣地,若您要同時部署和支援 Windows XP 與 Windows Vista,在同一個影像中儲存這兩者也無法節省空間。只有當您在這兩種部署中包含相同應用程式 (例如,2007 Microsoft® Office System) 的許多執行個體時,才會出現節省空間的情況。此時,該應用程式檔案無須儲存多次,但是即使如此,也不太可能省下太多空間。

Windows PE 開機方法

Windows PE 1.6

從遠端安裝服務 (RIS)

進行 PXE 開機 (無 RAMDisk)

硬碟機

USB 快閃磁碟機

RAMDisk PXE

RAMDisk CD/DVD

RAMDisk USB 快閃磁碟機

RAMDisk 硬碟機

Windows PE 2.0

RAMDisk PXE

RAMDisk CD/DVD

RAMDisk USB 快閃磁碟機

RAMDisk 硬碟機

從 RIS 進行 PXE 開機 在您需要 PXE 的情況下是最理想的選擇,但是比起 PXE RAMDisk,這種方法需要比較長的開機時間,而且耗用比較多的網路資源,因此不太划算。

硬碟機 使用最少記憶體但會鎖定磁碟機。如果您是使用雙磁碟分割進行對拷修復方案,這個方法就很適合。

USB 快閃磁碟機 讓開機程序更方便;但是如果開機系統尚未經過 OEM 驗證為 UFD 可開機,而且沒有 Windows Vista Capable 標誌 (標誌會確認系統支援 UFD 開機),UFD (在 RAMDisk 與非 RAMDisk 方案中) 便會雜亂無章。UFD 開機需要高效能 (讀取與寫入速度都很快) 的快閃磁碟機,以及 USB 控制器和 BIOS 的高速 USB 支援。

RAMDisk 開機 (在所有類型中) 需要更多記憶體,不過可以發揮最佳效能,並將 Windows PE 放入 RAMDisk 記憶體中以擺脫它的干擾。一般來說,Windows PE 1.6 的 RAMDisk 開機應該只用於至少具備 256MB RAM 的系統上。一般而言,Windows PE 2.0 (一定是 RAMDisk WIM 開機) 只應該在至少具備 384MB RAM 的系統上執行。

不過請注意,當您在相同的 WIM 中儲存特定 Windows 版本的多個 SKU 時,將可顯著節省空間。例如,假設您結合 Windows XP Professional 與 Windows XP Tablet PC Edition 或是結合 Windows Vista Business Edition 與 Windows Vista Ultimate Edition;這些結合案例可有效利用空間,因為相同版本與相同 Service Pack 層級的兩個 SKU 可共用許多同樣的程式碼與檔案。

最後該語言上場了。組織越大,需要考量的語言越多。在 Windows XP 中,您可以選擇使用當地語系化版本或多語系使用者介面 (MUI)。在完全當地語系化的 Windows XP 版本中,幾乎所有的字串都已翻譯成目標語言。另一方面,使用 MUI 時,基準語言是英文 (English),而 MUI 語言套件 (和之後的語言介面套件) 則會盡可能轉換語言字串 (MUI 在 Windows 2000 中使用的效果不錯,而在 Windows XP 與 Windows Server 2003 中的表現更好)。

若您的組織使用 MUI,當您在相同的 WIM 中結合各種語言版本時,會產生不錯的結果。這是因為他們的核心都是使用英文二進位碼檔案。但是在 Windows Vista 之前,當地語系化的版本並非如此。由於二進位碼檔案本身已當地語系化,而各種語言中的同一個二進位碼檔案並不相符,也就是說您必須針對每種語言儲存近乎整個作業系統 (和所有當地語系化應用程式)。

在 Windows Vista 中,您可以忽視當地語系化版本 (當地語系化檔案已成為單一二進位碼檔案的一部份,只是在其中包含不同的資源檔)。Windows Vista 會針對每種語言 (包括英文) 使用 .mui 資源檔。基本上,Windows Vista 是不受語言限制的,而幾乎所有語言資訊都存放在 MUI 檔案中。因此,將多種 Windows Vista 語言版本儲存在相同的 WIM 中,將可大幅節省空間。即使將兩種、四種或更多語言儲存成單一的 WIM,影像檔的大小也不會大幅增加,而且您可以之後再根據需求的變化來切換或新增語言。

簡言之,在建置解決方案時,您應該考慮到 Windows 版本,以及其他應用程式版本是否有共用相同的二進位碼檔案,以便將檔案儲存在單一執行個體存放區。這樣可協助您判斷整個組織需要多少 WIM 檔案。

使用者狀況

一般而言,組織越大,情況就會越複雜。原因不只是單純的組織規模而已,同時也是基於所產生的各種變數;亦即,使用者和業務單位更多,需求就會更龐雜。

我還記得一家跨國組織,它有數萬名使用者,而且從單一的地理與組織位置進行部署程序管理。這個組織的負責人總是會提出一些深具挑戰性的問題。譬如說,他會擔心在非洲某些地方的遠端使用者常遇到網路連線品質不良的情況,而且他們的位置往往距離電話線有數百哩遠。他需要知道這些使用者如何復原自己的系統,而不會停工好幾天或長途跋涉來取得支援。

當您開發產品時 (在此您應該將修復解決方案視為一個產品),您必須考量到使用者的需求。考量特定的商務需求,但同時也要考量與不同使用者類別相關的各種複雜情況。您應該整合所有的使用案例,並利用簡短說明來描述您支援的各種使用者類型。這樣可幫助您辨認出修復解決方案不小心遺漏的使用者,並確保您照顧到各種使用者類型的需求。

正確的 Windows PE 版本

另一項重要決策,是決定哪一種 Windows PE 版本符合您的需求。這個專欄的前幾篇文章可能有所助益,不過在此我會更清楚加以解說。如果您符合以下任何一種情況,就應該使用 Windows PE 1.6:

  • 您只需要修復 Windows XP (或 Windows Server 2003)
  • 您修復的系統都與進階組態與電源介面 (Advanced Configuration and Power Interface,ACPI) 不相容
  • 您修復的系統的 RAM 不到 512MB
  • 您修復的系統需要進行預先開機執行環境 (Pre-Boot eXecution,PXE),且記憶體是在 256MB RAM 以下。

如果您符合以下任何一種情況,就應該使用 Windows PE 2.0:

  • 您只需要修復 Windows Vista (或 Windows Server 2008)
  • 您需要同時修復 Windows Vista 及 Windows XP
  • 您有使用 BitLocker™

請注意,ImageX (請參閱〈建立、更新及儲存〉一節) 和大部分的協力廠商影像解決方案,都能順利搭配任一版本的 Windows PE 使用。

啟動 Windows PE

接下來您需要考慮到 Windows PE 的開機方式。使用者狀況在此扮演關鍵角色。讓您的使用者攜帶 CD 或 DVD 進行修復是否切合實際?他們能夠在旅行時放入膝上型電腦中嗎?還有您如何保持修復媒體的最新狀態呢?卸除式媒體上的修復影像可能很快就過時了。

毫無疑問,我最常見到的情況是使用次要硬碟磁碟分割。另一個選項則是 PXE 開機。您也可以考慮使用外部 USB 磁碟機,甚至是 USB 快閃磁碟機 (UFD);但要注意的是,使用的硬體必須明確支援從 UFD 裝置開機。

「Windows PE 開機方法」資訊看板概述各個 Windows PE 版本所支援的開機方法,並提供關於每個方法的一些重點考量。

您對啟動 Windows PE 的目標,應該是在符合特定條件的情況下啟動修復程序:

  • 以最低程度的使用者互動
  • 以最少的動作 (卸除式媒體或卸除式裝置)
  • 要考慮到電腦可能沒有網路連線
  • 要考慮到電腦可能無法在本機開機 (Windows 無法開機)

出自整個磁碟機發生故障的疑慮,系統管理員常會將 Windows PE (一般或 RAMDisk) 放在硬碟上視為不可行的選項。但事實上,基於今日磁碟機的可靠性,這其實是可行的,而且萬一實體磁碟機真的整個故障了,使用者也無法靠自己的力量修復系統。

因此我傾向於建立次要磁碟分割,並在此儲存修復影像。我並不太贊同隱藏該磁碟分割,這樣只會讓使用者感到困惑。在上面使用存取控制清單 (ACL) 也不實際,除非您的使用者都不是本機系統管理員。

藉由縮減用於 Windows 的磁碟分割 (請參閱「建立修復磁碟分割」資訊看板),您可以建立足夠的空間來儲存 Windows PE 和您的修復影像。若要將 Windows PE 放在次要磁碟分割上,您只要在修復磁碟分割上建立適當的開機磁區,並將 Windows PE 放在該磁碟分割上即可 (Windows AIK 與舊版 Windows PE 隨附的文件都有解說這個程序,在此我就不細述了)。請記得一個重點:用來開機的磁碟分割取決於標示為使用中的磁碟分割。Diskpart 有可用來設定使用中旗標,以及同等重要的非使用中旗標。若要從 Windows 內部 (或是從 Windows PE 副本內部) 啟動修復磁碟分割,請使用 diskpart 來切換使用中磁碟分割 (請參閱 [圖 1])。下面是用來切換單一磁碟中有雙磁碟分割系統的 diskpart 指令碼範例 (其中使用 diskpart /s nameofscript.txt):

SEL DIS 0 
SEL PAR 1 
INACTIVE
SEL PAR 2
ACTIVE
EXIT 

圖 1 Diskpart 變更使用中磁碟分割

圖 1** Diskpart 變更使用中磁碟分割 **(按影像可放大)

許多市售的修復工具都使用這個程序來對拷磁碟分割 -- Windows PE 本身就有內建可針對特定磁碟分割類型 (例如隱藏的 OEM 磁碟分割) 執行這個動作的功能。有時候這些工具也會取消隱藏已隱藏的 OEM 磁碟分割類型。

建立、更新及儲存

建立修復磁碟分割

只要您瞭解相關步驟,那麼建立修復磁碟分割並兼顧 Windows 完整性的作業並不困難。此處提供快速的必備步驟提要。請注意,這個處理程序需要 Windows PE 2.0。即使您可能不是使用 Windows PE 2.0 進行部署或修復,但是這項工作必須使用 2.0 版。在部署 Windows Vista 和建立用於 BitLocker 開機檔案的開機磁碟分割時,也可以應用這個程序,因為 BitLocker 需要至少兩個磁碟分割 (一個用於開機檔案,另一個用於 Windows 系統的其餘部分)。

  1. 重組磁碟 (有助於加速耗時的壓縮程序)
  2. 開機到 Windows PE 2.0
  3. 執行 diskpart (您也可以為步驟 4 到 9 建立指令碼,然後傳遞下列引數給 diskpart:/s name_of_your_script
  4. SEL VOL 1 (或是您要壓縮的磁碟區)
  5. SHRINK DESIRED=N MIN=N (指定單位為 MB,DESIRED 是目標,而 MIN 則是所需的絕對最小值)
  6. 壓縮完成時,執行 SEL DIS 0
  7. CRE PAR PRI (若要指定磁碟餘數以外的大小,您可以指定 SIZE=N)
  8. ASSIGN LETTER=N:(這個代號僅適用於 Windows PE 底下)
  9. 結束 diskpart
  10. FORMAT N:/Q /Y /FS:NTFS (NTFS 格式化新的磁碟分割)
  11. 執行 bootsect N:/nt60 用於 2.0,/nt52 用於 1.x)
  12. 複製所需的 Windows PE 檔案到修復磁碟分割
  13. 系統關機

ImageX 是免費提供的解決方案,不過您可能已經有慣用的影像工具。您可以使用最熟悉的工具。若考慮使用 ImageX,有幾點我覺得不錯的可以討論一下 (除了價格誘因以外)。ImageX 在壓縮方面特別有力。此外,可以附加影像和輕鬆加以編輯的這項特性也很棒。

另外,ImageX 可讓您以非破壞性的方式建立一或多個磁碟區的影像,這點也不錯,如此一來,您只要略過使用者資料即可保留這些資料。換句話說,在修復 Windows 時,您不需要消除整個磁碟區。

當然,您必須決定儲存影像的位置。假設您的解決方案使用修復磁碟分割,您可以在此儲存 WIM 或其他影像檔案。您甚至可以考慮使用 Windows 部署服務 (WDS),建立標準的 OS 影像,並儲存在網路上。這樣可提供整體基礎結構都適用的通用修復解決方案。當然,如果您有外派的使用者 (例如前文提到,在世界另一端的工作者),您必須確保當他們無法連上網路時也能使用自己的解決方案。

我說過您可以使用 DVD 等媒體,但是基於數個原因,我個人並不喜歡在一般用途中採取這個作法。舉例來說,影像大小很容易超過 DVD 的容量,而且 DVD 光碟不容易更新。我並不是說光學媒體毫無用處;只不過您必須衡量哪一種方案適合哪些使用者類型。如果您還猜不到的話,我的個人偏好是將影像儲存在修復磁碟分割、USB 硬碟或快閃磁碟機上,或是在允許的情況下,使用 WDS 儲存在網路上。

選用 WDS 的好處之一,是影像可以集中管理且容易更新。讀者應該都知道,現在每月都會推出 Windows Update,而且這些更新內容通常都很重要。您的解決方案應該盡可能將修復影像保持在最新的狀態。藉由 WDS,您將可以隨時在每個伺服器上更新影像,而且會很完整。

使用者資料與設定的考量重點

建構修復解決方案時,您必須謹記幾點。計畫任何修復解決方案的重點之一,是要確保使用者資料的安全性。您當然不希望外派使用者執行修復之後,發現所有重要資料都在修復過程中遺失了。最理想的情況是將使用者資料儲存在 C:磁碟分割以外的位置,否則您就必須非常小心處理系統修復作業。

我之前曾說過,ImageX 可讓您以非破壞性的方式還原磁碟。譬如說,它會將現有的 Documents and Settings (或 Users) 目錄樹狀結構移到另一個目錄,好讓使用者或指令碼在修復完成後能夠手動修復檔案。在大部分的情況下,將所有檔案儲存在自己的設定檔底下的使用者,或使用漫遊設定檔的使用者,應該都可以修復系統而不會遺失使用者資料。但是請記得,除非您非常仔細地打造修復解決方案,或有完美的備份解決方案,否則可能還是會遺失一部份的使用者資料。

別忘了,即使您盡心規劃,還是有些使用者會將資訊儲存在本身設定檔以外的位置。您應該確定您的解決方案考慮到可能會不小心弄丟使用者資料的情況,並且事先警告使用者。

若您使用加密檔案系統 (EFS),請確認已執行主要修復計畫,您一定不希望無法復原的加密造成資料遺失。跟 BitLocker 一樣,請確保您可以復原用它加密的磁碟區。這表示您需要使用 Windows PE 2.0 (1.x 無法與 BitLocker 互動)。如需 BitLocker 修復的詳細資訊,請參閱 blogs.msdn.com/si_team

最後,有些使用者會因為某些自訂內容或應用程式消失而感到困擾,請做好心理準備。自訂的內容 (針對應用程式或 Windows 本身) 會隨機儲存在其他位置,而非使用者設定檔中。在還原整個作業系統磁碟分割時,有些使用者會來電詢問:「x 到哪裡去了?」或是「Word 怎麼不再顯示 y 了?」請先灌輸使用者正確的觀念,讓他們瞭解系統環境不會與復原之前一模一樣。

使用 Windows PE 建立自己的修復解決方案需要花一些時間,而且在規劃及建構解決方案時,也必須考量到使用者狀況。修復解決方案不需要過度複雜化 -- 只要能支援您的使用者恢復作業,並在有限的技術支援和最短的時間內完成即可。

Wes Miller 任職於德州奧斯丁的 Pluck 公司 (www.pluck.com),擔任開發經理。他之前任職於同樣位在奧斯丁的 Winternals Software,並且曾在 Microsoft 擔任 Windows 的專案經理與產品經理。Wes 的連絡方式為:technet@getwired.com

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.