分享 Windows 7 一些簡化 IT 人員工作的進階功能 (VHD Boot, BCDBoot 等)

1) 資源監視器 - Resource Monitor

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


技巧:在開始搜尋輸入「perfmon /res」或「resmon」可執行資源監視器

2) 電源設定工具 - PowerCfg

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


技巧:存取功能的指令為「powercfg -energy」

3) 啟動修復選項 - Startup Repair

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


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

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

自 Vista 以來,Windows 改用 BCD 作為系統開機選項的格式,因為不再是純文字,要用 BCDEdit 工具才可編輯,不過並不簡單,例如以往若要將作業系統由一台機移到另一台作多重開機便要用 BCDEdit 輸入一大堆指令,但現在 Windows 7 新的 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 的所有功能)


技巧:可使用 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) 運作模式:


技巧:設置成動態 (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,其新增功能可參考這網頁


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

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

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


技巧:相反,若在管理員帳戶下使用「Run as」並以受限制的帳戶執行作業便可得到保護效果。

(原文:分享 Windows 7 一些簡化 IT 人員工作的進階功能 by wanderSick)
wanderSick wrote:
6) 原生虛擬硬碟開機 - Native VHD Boot
...........

8)「Run as」右鍵選單功能
...........
(恕刪)


VHD的功能蠻有趣的,不過這需要有VT功能的CPU才能用嗎?

除了Run as的功能外,還有一些功能都是要借助其他按鍵輔助才會出現,這個設計感覺還不錯...
VHD的功能蠻有趣的,不過這需要有VT功能的CPU才能用嗎?

不用的,因為 VHD Boot 並不是以虛擬機模式運作的,因此效能方面才那麼高 (使用 VHD Boot 與沒有使用有約 3% 分別)。而 XP 模式 (XP-mode) 是在進入 Windows 7 後以虛擬機模式運作的,需要 Intel VT/AMD-V。

除了Run as的功能外,還有一些功能都是要借助其他按鍵輔助才會出現,這個設計感覺還不錯...

是啊,還有 Open Command Prompt here、Copy as Path、Defragment、Open in new process,前兩個雖然 Vista 都有,但以往在 folder pane 是沒有的,Windows 7 就補回了。
不需要虛擬主機直接啟動VHD,跟直接做多重開機比起來,有什麼好處呀?

比起來,似乎不用去規劃分割區之類的東西...方便多了...

VHD Boot可以用於MS外的OS嗎?

感覺VHD Boot跟linux直接安裝在windows上很像...
不需要虛擬主機直接啟動VHD,跟直接做多重開機比起來,有什麼好處呀?

比起來,似乎不用去規劃分割區之類的東西...方便多了...
對啊,再配合文中所提到的「單一 VHD 檔案包含整個作業系統分區」,要製作多個作業系統只需要複製貼上再加幾行指令。另外,透過建立「母子關係」作快速復原,有問題時只需再建立子關係便可重來。這特點方便利用 Windows 作測試用途,因為不用擔心弄壞機。

不過其實以上的功能虛擬機 (VMWare/VirtualBox/Virtual PC) 很久前就已做到,但是 VHD Boot 強調的是能「原生開機」,令效能大幅提升,因為能直接存取機體上所有硬件,如顯示卡,所以原生 VHD Boot 的 3D 效能比虛擬機的強很多。
VHD Boot可以用於MS外的OS嗎?
很可惜,除了不能,就算是 MS 的都只支援 Windows 7 旗艦版和企業版。
感覺VHD Boot跟linux直接安裝在windows上很像...
不同之處在於 Linux 不是「原生開機」,沒有效能優勢;Windows 7 VHD Boot 則可兩者 (虛擬/原生) 之前切換,有彈性。

希望以上有助解釋文章所不足之處。
請問~關於第六點 "6) 原生虛擬硬碟開機 - Native VHD Boot"

因為電腦常會亂灌一些有的沒有的~~

雖然後ghost可以撐...(我是用trueimage)

不過VHD Boot好像剛好能符合我亂灌的習慣@@

請問這方面有實做的教學嗎? 謝謝

另外這邊提到的 "能直接存取機體上所有硬件"

指的就像一般直接開機進win7使用硬件的意思是一樣的嗎?

因為透過win7的vpc..顯卡功能根本是廢材@@..
剛剛爬了文~~大致瞭解~怎麼用~~

不過沒有看到 "子.vhd" 增量著做法...

有人知道怎麼處理嗎?
happysong526 wrote:
另外這邊提到的 "能直接存取機體上所有硬件"

指的就像一般直接開機進win7使用硬件的意思是一樣的嗎?

對,就是這個意思! 3D 效能是沒有分別的,因為沒有關係;分別只是在於磁碟的存取效能,因為 VHD Boot 存取時都要經過 NTFS → 虛擬硬碟 → NTFS → 硬碟。不過經測試發現效能只有 ~3% 分別 (固定類型),和開機可能慢一點點。但對於增量型來說,如果有多過一只硬碟,最好將母和子分別放到不同的硬碟,那應會更佳。

剛剛爬了文~~大致瞭解~怎麼用~~

不過沒有看到 "子.vhd" 增量著做法...

這裡我們談一談重點吧。首先跟著那些教學安裝 Windows 7 進去一個 VHD (例如官方的這個),它將會成為只能讀取的「母」(parent),然後使用以下指令產生可寫入的「子」(child) VHD:

diskpart
create vdisk file="e:\\child1.vhd" parent="e:\\parent.vhd"

(請自行更改路徑)

然後使用 BCDEdit 新增 VHD 項目到開機選單。

如果也正在使用 Windows 7,可使用 bcdedit /copy 複製自身的開機項目成為新的項目以節省時間:

bcdedit /copy {default} /d "Child 1"

(將 Child 改成為想在開機時顯示的描述)

然後 bcdedit 便會顯示新的 GUID 值,例如 {6d9d87fa-ac7c-11de-b191-001485a08a50}。將它取代下面的 {GUID}:

bcdedit.exe /set {GUID} device vhd="[locate]\\child1.vhd"
bcdedit.exe /set {GUID} osdevice vhd="[locate]\\child1.vhd"
bcdedit.exe /set {GUID} detecthal Yes

(這裡不用輸入路徑,因為我們利用 "locate" 自行搜尋功能)

如果有多個子 VHD (child2, child3...),重覆做多次便可。

還有另外一個使用 BCDBoot 的方法,這不用系統需要存在 Windows 7 開機選單的前提。不過要參考上面提到的教學了。
好像是不錯的funtion,不過可惜的是vista旗艦版沒有,而win7也要enterprise以上才有.......殘念....
對啊。Windows 7 要 Ultimate (旗艦版) 或 Enterprise,否則在登入前系統會彈出像授權不當之類的錯誤。

另外,剛剛發現 Disk2vhd。

這工具是 Microsoft Sysinternals 在兩天前發佈的,可以簡化把正運行的作業系統 (e.g. Windows 7) 轉成 VHD 的過程。

詳情:
http://blogs.itecn.net/blogs/asuka/archive/2009/10/08/disk2vhd.aspx
http://technet.microsoft.com/sysinternals/ee656415(en-us).aspx

如果配合這方法,按理就可以用小弟上面所述的方式製作了。不過未有測試過。

更正:後來才憶起原來 Windows Vista/7 內置的 Windows Backup (Complete PC Backup) 都可以 online 備份成 VHD,那 Disk2vhd 應是更適合其它沒有 Windows Backup 的 OS 了,例如 XP, Windows Server 等等。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!