Do nhu cầu thực tế về việc quản lý nhiều server nên khi kết nối vào chúng ta không biết là đang đăng nhập vào server nào, hoặc hướng dẫn ai đó cung cấp cho chúng ta một vài thông tin để chúng ta hỗ trợ họ. Với BGinfo giúp chúng lấy thông tin như: tên máy tính, username, địa chỉ IP, thông tin phần cứng, ... của máy tính hiện tại ghi lên màn hình nền của Desktop mỗi khi logon.
Mục tiêu
Lấy các thông tin hiển thị lên màn hình như hình dưới.
Yêu cầu:
1. Download Bginfo
2. Lấy các trường thông tin: Host name, Boot time, Logon server, Logon domain, User name, System type, Default Gateway, Memory, CPU, OS system, Volumes, Free Space được định nghĩa mặc định và in lên góc trên trái của màn hình.
3. Dùng WMI query để lấy thêm các trường thông tin: Domain Name, Model Name, Model Vendor, IP Address, DNS Server và MAC Address
4. Dùng VB Script để lấy địa chỉ IPv4 của máy tính.
5. Sắp xếp các trường cần hiển thị theo ý
6. Cài đặt Bginfo vào startup cho user.
7. Deploy từ Domain Controller xuống các máy con trong môi trường domain thông qua GPO.
Thực hiện:
1. Download Bginfo tại đây
2. Lấy các trường thông tin: Host name, Boot time, Logon server, Logon domain, User name, System type, Default Gateway, Memory, CPU, OS system, Volumes, Free Space được định nghĩa mặc định và in lên góc trên trái của màn hình.
Cài đặt nơi lưu ảnh sau khi ghi thông tin; vị trí hiển thị của trường thông tin là góc trên trái, và chỉ ghi trong phạm vi là 4,2 inch như hình dưới:
Chọn các trường đã được định nghĩa sẵn trong vùng Fields -> Add -> Apply -> OK để xem kết quả, cài đặt như hình dưới:
3. Dùng WMI query để lấy thêm các trường thông tin: Domain Name, Model Name, Model Vendor, IP Address, DNS Server và MAC Address
Chọn Custom... -> New... -> WMI query -> Browse trong WMI Class chọn Win32_ComputerSystem và Class Property chọn Domain -> OK -> đặt trên chổ Identifier là Domain Name (hay WMI Domain Name cho dể phân biệt) -> OK -> OK. Có thể tham khảo cài đặt như hình dưới:
Hoặc chúng ta có thể gõ trực tiếp câu query vào phần path như dưới và đặt tên chổ phần Identifier
Domain Name query:
SELECT Domain FROM Win32_ComputerSystem
Tương tự cho Model Name, Model Vendor, IP Address, DNS Server và MAC Address
Model Name:
SELECT Name FROM Win32_ComputerSystemProduct
Model Vendor:
SELECT Vendor FROM Win32_ComputerSystemProduct
IP Address:
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True
DNS Server:
SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True
MAC Address:
SELECT MACAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True
Noted: Với các trường IP address, DNS Server, MAC Address chúng ta phải thêm "WHERE IPEnabled=True" ở cuối câu query nếu không có một số trường hợp chúng ta nhận được kết quả có thêm chữ NULL như hình bên dưới
Kết quả cuối cùng của các trường query bằng WMI
Nhận xét: Với cách lấy IP Address bằng WMI query như hiện tại nó sẽ lấy cả IPv6 nếu IPv6 có enable trên máy tính. Để chỉ lấy IPv4 thì chúng ta có thể dùng VB Script với các query kèm thêm các điều kiện. Tham khảo mục VB Script ở mục 4.
4. Dùng VB Script để lấy địa chỉ IPv4 của máy tính.
Tạo file Bginfo.vbs với nội dung:
' Special BGInfo Script
' Only IPv4 Address v1.7
' Programmed by WindowsStar - Copyright (c) 2009-2011
' --------------------------------------------------------
strComputer = "."
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled = 'True'")
For Each objIP in colSettings
For i=LBound(objIP.IPAddress) to UBound(objIP.IPAddress)
If InStr(objIP.IPAddress(i),":") = 0 Then Echo objIP.IPAddress(i)
Next
Next
Cài đặt thực hiện query thông qua VBS, chúng ta trỏ đến file Bginfo.vbs vừa tạo ở trên. Tham khảo cài đặt như hình dưới:
Chọn IPv4 vừa định nghĩa trong vùng Fields -> Add để thêm vào nội dung cần hiển thị -> Apply -> OK xem kết quả.
Kết quả cho chúng ta thấy chỉ lấy duy nhất IPv4 cho dù IPv6 đang enable.
5. Sắp xếp các trường cần hiển thị theo ý
Các bạn có thể sắp xếp theo yêu cầu của các bạn, cách làm của chúng tôi chỉ nhằm mục đích tham khảo:
Sau khi xem kết quả nếu ok chúng ta lưu lại (file -> save as) với tên Bginfo.bgi cùng thư mục với file Bginfo.exe cho dễ.
Chúng tôi lưu vào C:\Windows\Bginfo, và hiện tại có 3 file (bginfo.exe là file chương trình, bginfo.vbs được tạo ra ở mục 4, bginfo.bgi được tạo ra ở mục 5 lưu cấu hình).
6. Cài đặt Bginfo vào startup cho user.
- Tạo file Bginfo.reg với nội dụng sau và chạy file này với quyền administrator:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Sysinternals\BGInfo]
"EulaAccepted"=dword:00000001
Kết quả sau khi chạy file Bginfo.reg
- Tạo file Bginfo.bat với nội dung:
@echo offÝ nghĩa: timer:0 : thời gian chờ là 0; nolicprompt: không cần cần hiển thị form xác nhận thông tin
cd
CALL "C:\BGinfo\Bginfo.exe" "C:\BGinfo\Bginfo.bgi" /timer:0 /nolicprompt
- Tạo shortcut để chạy file Bginfo.bat mỗi khi đăng nhập vào máy
7. Deploy từ Domain Controller xuống các máy con trong môi trường domain thông qua GPO.
- Share folder Bginfo trên file server và cho phép các client truy cập vào folder này
Kết quả truy cập đến folder Bginfo trên file server thành công.
- Tạo GPO thực hiện copy tất cả các file Bginfo.* từ file server đến máy client
- Tạo regedit key mặc đinh cho phép (EulaAccepted) khi chạy lần đầu tiên
- Tạo shortcut để thực thi file Bginfo.bgi trên Startup
- Thực hiện deploy từ domain xuống các client
Với các máy client các bạn thực hiện lệnh gpupdate /force và log off lại máy để xem kết quả.
Chúng tôi hy vọng sẽ ít nhiều giúp được các bạn khi cần.
Các file đã thực hiện của bài lab
Xong!
Các link tham khảo
1. Cài đặt cơ bản từ microsoft.com
2. Remove the (none) IP Address
3. VBScript for displaying only IPv4 Addresses