簡化 IT 工作 — 八個 Windows 進階技巧

(This legacy article is Chinese-only. Translate it to English.)

這篇文章原為 HKEPC 09 年活動「Windows 7 新功能、新發現」的參賽作品,後來加多四個技巧便成這篇文章。技巧適用於 Windows 7 或更新的系統。

1. 資源監視器 - Resource Monitor

Windows 7 的資源監視器被大幅增強,整合了同門 Sysinternals Process Explorer 不少進階功能。例如以往檔案如因被某些程式佔用而不能刪除,因不知道是哪個程式,我們非透過第三方軟體解決不可;現在可透過「搜尋控制代碼」(Associated Handles) 找出真凶。

Resource Monitor in Windows 7, Search Handle
技巧:在開始搜尋輸入「perfmon /res」或「resmon」可執行資源監視器

2. 電源設定工具 - PowerCfg

PowerCfg 是進階的電源設定工具,因指令煩多和沒需要,以往較少會用到,但 Windows 7 的 PowerCfg 新增有用的電源效率報告功能,主要用以分析軟硬體和周邊裝置能否配合省電模式運作 (如 Selective Suspend),以節省電費或提高手提電腦的續航力。例如報告中可以找到防礙 CPU 進入省電模式的裝置和驅動程式、在系統閒置時佔用資源過多的程式的詳細資料、所支援的睡眠模式等,但最有用的功能可能就是偵測電池充電足不足所標示的容量 - 隔一段時間再執行便可比較前後來得知電池的耗損情況。

Power Efficiency Report in Windows 7, PowerCfg Energy
技巧:存取功能的指令為「powercfg -energy」

3. 啟動修復選項 - Startup Repair

很多時就算知道只是小問題,當遇上電腦開機失敗的話 IT 人員都不得不走到用家電腦面前,因為電話中指示太麻煩。「啟動修復選項」是自 Vista 就有的一系列自動修復作業,放入安裝光碟執行程式後它便懂得診斷和解決。現在再不用光碟,這麼實用的功能終於首次內建於 Windows 的新安裝!以後當入不到 Windows,程式便自動執行,IT人員終於無須再「無事東奔西走或者講到口水乾了」。

Startup Repair in Windows 7
技巧 1:如欲停用功能,可用「bcdedit /deletevalue {current} recoveryenabled」
技巧 2:如欲將系統修復工具燒錄成可開機光碟片,可用「recdisc」

4. 開機選項設定工具 - BCDBoot

自 Vista 以來,Windows 改用 BCD 作為系統開機選項的格式,因為不再是純文字,要用 BCDEdit 工具才可編輯,不過並不簡單,例如以往若要將作業系統由一台機移到另一台作多重開機便要用 BCDEdit 輸入一大堆指令,但現在 Windows 7 新的 BCDBoot 工具只需一行指令,而且就算目的地完全沒有開機檔案,它也能一併將所需檔案抄過去並設定好。

BCDBoot
技巧:在 PE 用 ImageX 部署後,用「bcdboot /s」安裝開機檔在指定磁區

5. 部署影像維護和管理工具 - DISM

DISM (Deployment Image Servicing and Management) 是結合舊版 WAIK (Windows Automated Installation Kit) 內多種工具再把離線及在線設置 Windows 的功能大幅加強後的一體化管理工具,首次內建於 Windows。以往慣常使用 Ghost 的我們若要更新 .gho 影像檔內 Windows 的 Service Pack 或者安裝驅動程式等,我們都必須將影像檔內容完全「倒」出來,登入其 Windows 才能進行設置,現在我們只需使用 DISM 掛載 ImageX 的 .wim 影像檔,利用其離線設置功能便可達成更改版本/授權碼、新增移除驅動程式/補丁/Windows 元件、設置無人值守安裝、設置介面語言/時區等等。完成後,只需卸載 .wim 並指示儲存變更即可。
除了.wim 外亦可使用其它離線 Windows 作來源,亦可使用 Diskpart 掛載 VHD,只要其中的 Windows 為 Vista SP1 或以上便可。(但 Windows 7 或 Server 2008 R2 才能支援 DISM 的所有功能)

PEImg, DISM
技巧:可使用 DISM /Online /Add-Package /PackagePath 指令
在非旗艦版或企業版下安裝語言包。(詳情)

6. 原生虛擬硬碟開機 - Native VHD Boot

要明白 VHD Boot 便先要了解虛擬電腦。一如其它虛擬技術,虛擬電腦 (Virtual Machine) 帶來的是 flexibility,而 VHD Boot 是這無窮彈性的又一延伸,例如我們可以無需分割硬碟,在同一個分區安放多個 VHD 檔案作多重開機。透過 VHD Boot 我們的作業系統終可於「真實與虛擬」間穿梭 - 能以一個 VHD 檔案代替真實分區管理整個作業系統,亦可透過磁碟管理工具新增的 VHD 掛載功能將 VHD 變成分區;能在一個已運行的作業系統上同時以虛擬機 (e.g. Virtual PC) 跑多個 VHD 作業系統以節省多部電腦的資源,亦可以獨立運作該 VHD 以獲取最大效能 - 後者即新功能 VHD Boot。VHD 內的作業系統需為 Windows 7 Ultimate、Enterprise 或 Server 2008 R2。

更新:有網友問有關 VHD Boot 效能的問題。原生 VHD 開機與在進入 Windows 後以虛擬機啟動 VHD 的最大分別是前者無需經虛擬機運作。經虛擬機代表著不能夠直接存取裝置,而是透過模擬出來的硬體和驅動程式,所以效能 (尤其是 3D) 比直接由真實硬碟啟動差很遠。VHD Boot 則完全沒有這些問題,唯一是磁碟效能會有損耗,因為 VHD Boot 依賴 mini-port driver 存取真實硬碟,要經過 NTFS → 虛擬硬碟 → NTFS → 硬碟。電腦周刊 PCM 曾測試發現效能只有輕微分別 (固定 VHD 來說),和開機慢一些。但對於動態 VHD,寫入的效能稍差。此外現時 VHD Boot 還有些限制,例如不支援休眠和 BitLocker 磁碟加密便對筆記型電腦吸引力較低 (待命卻支援)。
VHD 的另一彈性是支援「母子關係」-增量型 (Differencing) 運作模式:
VHD Boot, Differencing
技巧:設置成動態 (Dynamic) 類型的 VHD 預設於每次開機時都會將實體磁區內的 VHD 檔案延展至虛擬磁區內所設定的大小,若足間不足便會出現籃畫面 (BSOD),可更改 Thin Provisioning 的登錄設定值將它設定為在有資料寫入時才延展:

「REG ADD "HKLM\SYSTEM\CurrentControlSet\services\FsDepends\Parameters" /v "VirtualDiskExpandOnMount" /t REG_DWORD /d 0x4 /f」

7. PowerShell

目標為 Unix 的 shell,PowerShell 是個大幅增強的命令提示字元,也是最適合系統管理員學的編程語言。PowerShell 提供簡易的方法存取以往難以親近的 .NET Framework,填補程式編寫員與系統管理員之間的縫隙。因為系統管理員講求的是快速完成作業,所以 PowerShell 不太重視物件名稱的大小寫,cmdlet (內建的指令段) 以動詞+名詞簡易地構成(如 Get-WmiObject),並透過 alias (別名)減少輸入指令的長度(如 Get-WmiObject 的 alias 是 gwmi),還有<Tab>鍵自動完成和 property 縮寫等等特性。此外,自動化作業對於系統管理是必須的;越來越多微軟 server 應用的圖像化管理介面背後都是 PowerShell (如 Exchange Server 2007),加上終於首次內建於客戶端作業系統 (Windows 7),可見 PowerShell 未來會是一項重要管理技術。Windows 7 內置的是新的 PowerShell 2.0,其新增功能可參考這網頁

PowerShell Examples
技巧:微軟吸收了 Windows Scripting Host (WSH) 的教訓,PowerShell 預設是不能執行任何指令檔,要啟用指令檔,需設定 Set-ExecutionPolicy RemoteSigned (允許本機和具數位簽證的遠端指令檔) 或 Unrestricted (允許所有指令檔)

8.「Run as」右鍵選單功能

右鍵選單上的「Run as (different user)」透過 Secondary Logon 技術以有別於當時登入了的使用者身份執行指定的應用程式,通常在受限制的帳戶下使用,例如當管理員需要替用者進行軟體或驅動程式安裝等等系統作業而又不許轉換帳戶時,便先要在應用程式上按右鍵,輸入具管理員權限的帳戶的登入名稱和密碼來提升權限 (elevate),然後安裝程式才能寫入系統登錄 (e.g. HKLM) 和系統資料夾 (e.g. Program Files)。不過這個功能在 Vista 被削去了,只留有「Run as Administrator」(以系統管理員身份執行),而不能指定別的帳戶。在 UAC 沒被關閉的情況下,本來沒有權限的用者在執行需要管理員權限的作業時系統都會彈出 Credential Prompt 提示輸入管理員帳戶的名稱和密碼,本應沒有問題,但據說不少企業 IT 反映他們為了減少訊息對用者做成的困擾,於是便停用了 UAC 功能,以使到無法在需要時方便地提升權限 (要使用命令列版本的 runas.exe 配上特別方式才可)。於是 Sysinternals 部門去年便推出了 ShellRunAs,而 Windows 7 亦以隱藏方式補回這功能。
RunAs Context Menu in Windows XP, Vista, 7
技巧:相反,若在管理員帳戶下「Run as」受限制的帳戶,執行的作業便可得到「保護」

歡迎用以下方式儲存或分享本文:

Comments