[Utility]透過 BGInfo 搭配群組原則顯示正確的環境資訊

[Utility]透過 BGInfo 搭配群組原則顯示正確的環境資訊

最近調整一下虛擬化的環境,也把相關的 Lab 內的系統都換成 Windows Server 2012 的環境了,雖然同時有那麼多的 VM 需要去使用和管理,好在有 「Remote Desktop Manager」 這套軟體,在管理起來就方便很多了。( 可參考 http://remotedesktopmanager.com/ )

image

 

但有些時候當用一堆遠端桌面連上去的時候,常常會搞不清楚每一台主機的環境和版本,因此就想說把 BGInfo 這套軟體給裝上去,並且配合 AD 的 Domain Policy 的機制,讓 Lab 環境內的電腦都可以在桌面上顯示主機的資訊。

 

Install


這套軟體早期是 Sysinternals 公司所製作的工具,後來該公司已經被微軟給併購了,因此可以前往微軟的網站進行下載該軟體,網址是 http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx

 

直接解開壓縮檔之後,放在你想要的目錄下,執行程式就可以了。基本上預設提供的東西有點多,因此我就按照我所需要的調整一下,看起來也清楚些。也可以按照右下方的一些選項按鈕,把訊息調整到你想到的地方。調整好之後可以透過上方的 Menu 選擇 「File」→「Save As…」將設定檔儲存起來。

image

 

經過一番調整和設定之後,看起來我想要的資訊都有了,看起來會像下圖一般的顯示。

image

 

由於這些檔案我希望在網域內的電腦都能套用,因此我把設定檔放到 C:\Windows\SYSVOL\sysvol\mylab.com\scripts 的目錄下,中間紅色的部分就看您的網域名稱是甚麼,改成對應的就是了。所以我把整個目錄,連同檔案和設定檔案都一併複製到這個目錄之下。

image

 

Configure


接下來我們要建立一個 Script,希望透過群組原則讓每台網域內的電腦都可以執行,因此我們先建立一個批次檔「SetBGInfo.bat」,內容如下:

cmd /c
@echo off
%logonserver%\NETLOGON\BGinfo\BGinfo.exe %logonserver%\NETLOGON\BGinfo\BGinfo.bgi /timer:0 /nolicprompt

 

在主機上先測試一下看 Script 是否可行,並且把這個執行檔案找一台有加入網域的電腦測試一下,看看有沒有路徑名稱拚錯或者是有沒有任何執行上的異常,如果沒有的話,那麼我們就可以到群組原則上來做相關設定了。

 

在主機上開啟「群組原則管理」,選擇我們所在的網域,按下滑鼠右鍵,選擇「在這個網域中建立 GPO 並連結到…」的選項

image

 

建立新的一組群組原則,這裡我指定為 BGInfo

image

 

按下確定之後,會回到群組原則管理,此時會出現我們剛剛所建立的那一組 BGInfo,於是點選該組設定,按下滑鼠右鍵,選擇「編輯」

image

 

選擇「電腦設定」→「原則」→「Windows 設定」→「指令碼」→「啟動」,按下滑鼠右鍵再選擇「內容」

image

 

選擇下方的「顯示檔案」

image

 

把最前面產生的 SetBGInfo.bat 的檔案複製過來 ( 不是移動,因為等下還有地方需要這個檔案 ),複製好後就可以關閉檔案總管的視窗,選擇上圖畫面中右邊的「新增」按鈕。

image

 

此時可以按下右邊「瀏覽」的按鈕,就可以選擇到前一個步驟所放置的 SetBGInfo.bat 了。按下「確定」就完成了電腦設定。

image

 

接下來用同樣的方式,在到「使用者設定」→「原則」→「Windows 設定」→「指令碼」→「登入」,按下滑鼠右鍵再選擇「內容」,接下來的步驟就跟前面從電腦設定的步驟都相同了。

image

 

設定完之後,我們會開啟一個 DOS 視窗,指定執行   「gpupdate /force」,將群組原則強制更新。

image

 

Advanced


透過前面所設定的方式,接下來我們重新登入網域內的電腦,看起來大部分都很正常,但因為有些 VM 我們會更換他的網卡設定,可能會造成類似下方的狀況,會抓到一些 「(none)」的網卡資訊,雖然只是看起來比較討厭一點,但有些電腦可能因為切換的比較多次,也調整過許多次網路的設定,可能會有五六個 (none) 的資訊,於是決定找看看有沒有方法來調整。

image

 

我們開始 BGInfo,利用自訂欄位的方式來做處理,因此選擇右方的「Custom」的選項

image

 

選擇「New」

image

 

給一個新屬性的名稱,因此我這裡命名為「Active IP Address」,使用「WMI Query」的方式去取資料,選好後按下下方「Browse」來選擇 WMI 的指令。

image

 

在這裡我們 WMI Class 挑選「Win32_NetworkAdapterConfiguration」,屬性選擇「IPAddress」,此時出來的也會有一堆是 null 的資料,因此我們在 WMI Query 後面再加上一段判斷式「WHERE IPEnabled = True」,這樣就會只剩下我們有在使用的 IP 資訊了。

image

image

 

設定好新的自訂屬性之後,接下來我們重新調整一下原本 BGInfo 的設定值,將原本的 IP Address 給刪除,改用我們新設定的「Active IP Address」

image

 

此時再重新登入一次電腦,就可以看到已經沒有 (none) 之類的訊息了。

image

 

 

Memo


BGInfo 和群組原則都是很普遍使用的工具和方法,只是一般我們都比較少使用到自訂屬性的部分,如果我們可以更熟悉 WMI 相關的 Class 和屬性的話,這個部分還可以有不少的資訊可以顯示,就看我們要怎麼使用囉。其實相關的處理在之前都有寫過,只是這次剛好全面換上 Windows Server 2012,想說再來複習一下,順便測試看看 WMI 的部分,是否有機會把困擾一陣子的問題給解決了,算是不錯的收穫。