Quản lý các mạng Windows dùng script - Phần 3: Hiểu về WMI - Pdf 69

Quản lý các mạng Windows dùng script - Phần 3: Hiểu về WMI

Nguồn : quantrimang.com 
Mitch Tulloch
Phần này sẽ giới thiệu với các bạn về nguyên tắc hoạt động của Windows
Management Instrumentation (WMI) cách nó có thể được scrip bằng
VBScript.
Trong hai phần đầu của loạt bài này chúng ta đã biết cách thay đổi địa chỉ IP của
một bộ điều hợp mạng trên máy tính Windows dùng VBScript. Chúng ta cũng đã
biết về nhiều khái niệ
m cơ bản của Windows scripting như lớp (class), đối tượng
(object), thuộc tính (property), phương thức (method) và các kiểu biến khác nhau
như biến xâu (string), biến mảng (array), biến nguyên (integer), biến tập hợp
(collection). Kết thúc ở phần một là một script đơn giản thực hiện được nhiệm vụ
thay đổi địa chỉ, và phần hai bổ sung thêm nhiều tính năng hỗ trợ quan trọng
khác như định nghĩa các biến, triển khai kiể
m soát lỗi, nhận thông tin người dùng
đầu vào, hiển thị xác nhận dữ liệu đầu ra và dẫn giải script bằng các chú thích.
Script cuối cùng của chúng ta hoạt động tốt như mong đợi, nhưng vẫn còn nhiều
thứ rất khó hiểu. Ví dụ như dòng lệnh sau:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Trong phần đầu chúng ta có chú thích: “Dòng lệnh này kết nối tới namespace
root\cimv2 trên máy cục bộ bằng cách định nghĩa một đối tượng có tên
objWMIService và đặt nó bằng với
điều khiển trả về từ phương thức GetObject”.
Điều này có nghĩa là gì? WMI là gì và nó hoạt động như thế nào? Vì sao khái
niệm này lại quan trọng khi muốn viết được một script tốt để quản trị các máy
Windows?
Hiểu về WMI
WMI ra đời từ thời kỳ của Windows 98 hoặc sớm hơn. Trước đây nó được gọi
với cái tên khác Web-Based Enterprise Management (WBEM), tức Công cụ

những điều mình muốn như thay đổi địa chỉ IP, xem múi giờ, khởi động lại máy
từ xa, hiển thị danh sách các bản vá đã được cài đặt…
WMI Namespace
Đến giờ, chúng ta vẫn chưa biết gì về cách thức hoạt động của WMI? Cũng
không hẳn thế. Thực ra, để hi
ểu được về WMI đòi hỏi chúng ta cần phải kiên
nhẫn và có một chút kiến thức cơ sở. Hãy bắt đầu bằng cách xem xét các
namespace WMI. Trong thuật ngữ WMI, namespace là một cơ sở dữ liệu logic
của các lớp và các thể hiện của chúng. Dưới đây là một script đơn giản có tên
ShowNamespaces.vbs, liệt kê tất cả các namespace WMI bên dưới namespace
gốc:
Set objWMIService = GetObject("winmgmts:\\.\root")
Set colNamespaces = objWMIService.InstancesOf("__NAMESPACE")

For Each objNamespace In colNamespaces
WScript.Echo objNamespace.Name
Next
Và kết quả chạy script trên một máy Windows XP là:
C:\scripts>cscript ShowNamespaces.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

SECURITY
RSOP
Cli
SecurityCenter
WMI
CIMV2
Policy
Microsoft

On Error Resume Next
Dim strComputer
Dim strWMINamespace
Dim objWMIService
Dim colNamespaces
Dim objNamespace

strComputer = "."
strWMINamespace = "\root\CIMV2"

Set objWMIService = GetObject("winmgmts:\\" & strComputer &
strWMINamespace)
Set colNamespaces = objWMIService.InstancesOf("__NAMESPACE")

For Each objNamespace In colNamespaces
WScript.Echo objNamespace.Name
Next
Tại sao chúng ta cần tìm hiểu tất cả các vấn đề này? Lý do chính là bởi tính linh
hoạt! Ví dụ, nếu cần chạy script trên một máy từ xa, chúng ta có thể thay đổi
biến strComputer thành địa chỉ của máy từ xa. Hoặc nếu cần hiển thị một phần
khác của namespace, chúng ta có thể thêm một vài dòng vào script để nó nhận
dữ liệu đầu vào của ngườ
i dùng trên biến strWMINamespace.
Nhà cung cấp WMI
Tìm ra đúng namespace là thách thức đầu tiên (mặc dù hầu hết các trường hợp
kết nối tới namespace mặc định là đủ). Ngoài ra bạn còn cần tìm ra đúng nhà
cung cấp phù hợp để truy vấn hoặc update dữ liệu trên hệ thống bạn đang
hướng đến. Dưới đây là script có tên ShowProviders.vbs, hiển thị tất cả nhà
cung cấp WMI cho namespace root\CIMV2:
Option Explicit

WMIPingProvider
Microsoft WMI Forwarding Event Provider
Win32_WIN32_TSNETWORKADAPTERSETTING_Prov
SystemConfigurationChangeEvents
Win32_WIN32_TERMINALSERVICE_Prov
Win32_WIN32_TSREMOTECONTROLSETTING_Prov
Win32_WIN32_TSNETWORKADAPTERLISTSETTING_Prov
Win32_WIN32_COMPUTERSYSTEMWINDOWSPRODUCTACTIVATIONSETTI
NG_Prov
Win32_WIN32_TSSESSIONDIRECTORY_Prov
CmdTriggerConsumer
Standard Non-COM Event Provider


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status