- Trang Chủ
- Quản trị mạng
- Giáo trình Quản trị Hệ thống mail server và web server (Nghề: Quản trị mạng máy tính) - CĐ Công nghiệp và Thương mại
Xem mẫu
- BỘ CÔNG THƢƠNG
TRƢỜNG CAO ĐẲNG CÔNG NGHIỆP VÀ THƢƠNG MẠI
GIÁO TRÌNH
MÔ ĐUN: QUẢN TRỊ HỆ THỐNG WEBSERVER
VÀ MAILSERVER
NGHỀ : QUẢN TRỊ MẠNG
Trình độ: CAO ĐẲNG NGHỀ
Ban hành kèm theo Quyết định số: /QĐ-CDCN&TM ngày tháng năm 2018 của
Hiệu trưởng Trường Cao đẳng Công nghiệp và Thương Mại
Vĩnh phúc, năm 2018
- MỤC LỤC
CHƢƠNG 1. NHỮNG KHÁI NIỆM CƠ BẢN ...............................................1
1.1. Scripts và Network Scripting ....................................................................1
1.2. Các thành phần của Script .........................................................................2
1.3. Điều khiển lỗi, định nghĩa biến và dữ liệu ngƣời dùng .............................4
1.4. Ví dụ về xây dựng và thi hành một Scripts ...............................................5
CHƢƠNG 2. KIỂM SOÁT QUẢN LÝ WINDOWS BẰNG SCRIPT (WINDOWS
MANAGEMENT INSTRUMENTATION – WMI SCRIPTS) ........................7
2.1.Giới thiệu WMI .........................................................................................7
2. 2. Nguyên tắc hoạt động của WMI ............................................................ 13
2.3. Các lớp WMI .......................................................................................... 14
2.4. Sử dụng WMI ......................................................................................... 16
2.5. Các thuộc tín của WMI ........................................................................... 29
CHƢƠNG 3. VIẾT KỊCH BẢN CHẠY TRÊN CÁC MÁY TỪ XA (SCRIPTING
REMOTE)........................................................................................................ 34
3.1. Giới thiệu về Scripting Romote và xây dựng Scripting Romote .............. 34
3.3. Xử lý sự cố lỗi với Scripting Romote ...................................................... 40
3.4. Xử lý lỗi kịch bản điều khiển từ xa bằng Network Monitor 3.0 .............. 48
3.5. Tìm hiểu kịch bản điều khiển xa ............................................................. 57
3.6.Các thủ thuật của kịch bản điều khiển xa ................................................. 61
CHƢƠNG 4. MỘT SỐ THỦ THUẬT SCRIPTS KHÁC ................................. 67
4.1. Thủ thuật “runas” nhƣng với sự mã hóa .................................................. 67
4.2.Truy vấn cho quản trị viên cục bộ bằng WMIC ....................................... 72
4.4. Sử dụng WMIC tƣơng tác ....................................................................... 95
4.4. Sử dụng WMIC trong các file Batch ....................................................... 96
- CHƢƠNG TRÌNH MÔN HỌC
Tên môn học: Quản trị hệ thống Webserver, Mail server
Mã môn học: MĐCC13030131
Thời gian thực hiện môn học: 75 giờ; (Lý thuyết: 15 giờ; Thực hành, thí nghiệm,
thảo luận, bài tập: 57 giờ; Kiểm tra: 3 giờ)
I. Vị trí, tính chất của môn học:
- Vị trí của môn học: Môn học đƣợc bố trí sau khi sinh viên học xong các môn học
chung, các môn học cơ sở chuyên ngành, sau một số mô đun chuyên môn nghề nhƣ:
Mạng máy tính căn bản, Hệ điều hành, Quản trị Windows server cơ bản, Quản trị
Windows Server nâng cao.
- Tính chất của môn học: Là môn học môn học, mô đun chuyên môn ngành, nghề.
II. Mục tiêu môn học:
Môn học này cung cấp cho ngƣời học các kiến thức cơ bản về kịch bản quản lý,
điều hành mạng, kịch bản tấn công mạng, kỹ thuật xây dựng kịch bản mạng
- Về kiến thức:
+ Trình bày đƣợc các kiến thức cơ bản về kịch bản mạng và kỹ thuật xây dựng
kịch bản, các bƣớc xây dựng và triển khai kịch bản quản lý, kiểm soát Windows
và điều khiển từ xa trên nền VB Scripts
- Về kỹ năng:
+ Xây dựng đƣợc kịch bản triển khai quản lý máy tính và hệ thống mạng.
+ Tự động hóa việc quản lý, phát hiện lỗi, báo cáo và xử lý lỗi bằng Scripts.
+ Sử dụng các lớp, các đối tƣợng và thành phần của đối tƣợng để xây dựng các
kỹ thuật kịch bản hỗ trợ tự động hóa quá trình kiểm soát và điều khiển.
- Về thái độ: Có đạo đức và lƣơng tâm nghề nghiệp, ý thức kỷ luật tốt, tích cực tiếp
thu kiến thức mới.
III. Nội dung môn học:
1. Nội dung tổng quát và phân phối thời gian:
Thời gian (giờ)
TT Nội dung môn học Tổng Lý Thự Kiể
số thuyế c m
1
- t hành tra
1 Chƣơng 1. Những khái niệm cơ bản 5 5 0
2 Chƣơng 2. Kiểm soát quản lý Windows
bằng Script (Windows Management 23 3 19 1
Instrumentation – WMI Scripts)
3 Chƣơng 3. Viết kịch bản chạy trên các máy
từ xa (scripting remote) 22 2 19 1
4 Chƣơng 4. Một số thủ thuật Scripts khác 25 5 19 1
Tổng cộng 75 15 57 3
2. Nội dung chi tiết:
Chƣơng 1. Những khái niệm cơ bản
Mục tiêu:
- Kiến thức: Trình bày kịch bản và kịch bản mạng máy tính trên nền tảng hệ
điều hành Windows, liệt kê đƣợc các bƣớc xây dựng và triển khai đƣợc một
kịch bản và mô tả đƣợc các thành phần của một Scripts.
- Kỹ năng:
+ Viết đƣợc 1 Script sử dụng mã lệnh có sẵn
+ Triển khai đƣợc 1 Script đã xây dựng
- Thái độ: Tích cực tìm hiểu về kịch bản mạng.
Nội dung chƣơng: Thời gian: 5 giờ (LT: 5; TH: 0)
1.1. Scripts và Network Scripting
1.2. Các thành phần của Script
1.3. Điều khiển lỗi, định nghĩa biến và dữ liệu ngƣời dùng
1.4. Ví dụ về xây dựng và thi hành một Scripts
Chƣơng 2. Kiểm soát quản lý Windows bằng Script (Windows Management
Instrumentation – WMI Scripts)
Mục tiêu:
- Kiến thức: Trình bày đƣợc ý nghĩa và nguyên tắc hoạt động của VMI, các lớp
WMI và cách sử dụng WMI.
- Kỹ năng:
+ Xây dựng đƣợc WMI để quản lý kiểm soát Windows và hệ thống máy tính
trên hệ thống mạng
+ Triển khai Script để tự động hóa quá trình kiểm soát hệ thống mạng
- Thái độ: Tích cực tìm hiểu về các thành phần phần của WMI Scripts.
Nội dung chƣơng: Thời gian: 23 giờ (LT: 3; TH: 20)
2
- 2.1. Giới thiệu WMI
2.2. Nguyên tắc hoạt động của WMI
2.3. Các lớp WMI
2.4. Sử dụng WMI
2.5. Sử dụng Win32_NetworkAdapterConfiguration
2.6. Các thuộc tín của WMI
Chƣơng 3. Viết kịch bản chạy trên các máy từ xa (scripting remote)
Mục tiêu:
- Kiến thức: Trình bày đƣợc ý nghĩa và nguyên tắc hoạt động của kịch bản trên
các máy từ xa, các lớp scripting remote và cách sử dụng scripting remote.
- Kỹ năng:
+ Xây dựng đƣợc scripting remote để quản lý kiểm soát điều khiển từ xa các
máy tính trên hệ thống mạng
+ Triển khai Script để tự động hóa quá trình điều khiển từ xa trong hệ thống
mạng
- Thái độ: Tích cực tìm hiểu về các thành phần phần của Remote Scripting.
Nội dung chƣơng: Thời gian: 22 giờ (LT: 2; TH: 20)
3.1. Giới thiệu về Scripting Romote và xây dựng Scripting Romote
3.2. Xử lý sự cố lỗi với Scripting Romote
3.3. Xử lý lỗi kịch bản điều khiển từ xa bằng Network Monitor 3.0
3.4. Tìm hiểu kịch bản điều khiển xa
3.5. Các thủ thuật của kịch bản điều khiển xa
Chƣơng 4. Một số thủ thuật Scripts khác
Mục tiêu:
- Kiến thức: Sinh viên trình bày đƣợc các thủ thuật runas, truy vấn cục bộ để lấy
thông tin, tƣơng tác và xử lý theo lô.
- Kỹ năng:
+ Triển khai đƣợc các thủ thuật mã hóa, truy vấn, tƣơng tác và xử lý theo lô với
thủ thuật runas và các WMIC tƣơng ứng
Thái độ: Tích cực tìm hiểu về các kỹ thuật Script bổ sung
Nội dung chƣơng: Thời gian: 25 giờ (LT: 5; TH: 20)
4.1. Thủ thuật “runas” nhƣng với sự mã hóa
4.2. Truy vấn cho quản trị viên cục bộ bằng WMIC
4.3. Sử dụng WMIC tƣơng tác
4.4. Sử dụng WMIC trong các file Batch
IV. Điều kiện thực hiện chƣơng trình:
3
- Đầy đủ tài liệu học tập nhƣ: Giáo án, giáo trình về môn học Kỹ thuật kịch bản
mạng
V. Phƣơng pháp và nội dung đánh giá:
1. Nội dung
- Về kiến thức:
+ Trình bày đƣợc các kiến thức nền tảng về kịch bản mạng
+ Trình bày đƣợc các đặc điểm kỹ thuật của một số kịch bản thông dụng
+ Trình bày đƣợc các kỹ thuật xây dựng và triển khai kịch bản mạng.
- Về kỹ năng:
+ Xây dựng và lập trình đƣợc các script để quản lý và tự động hóa quá trình kiểm
soát và điều khiển từ xa.
+ Triển khai một số kỹ thuật kịch bản mạng phổ biến.
- Về thái độ: Có đạo đức và lƣơng tâm nghề nghiệp, ý thức kỷ luật tốt, tích cực tiếp
thu kiến thức mới.
2. Phƣơng pháp
- Học sinh tham gia học ít nhất 80% tổng số tiết môn học, tham gia kiểm tra và thi
kết thúc môn học theo quy chế hiện hành.
- Điểm đánh giá quá trình gồm có:
+ Kiểm tra thƣờng xuyên: 01 bài kiểm tra (Điểm hệ số 1)
+ Kiểm tra định kỳ: 03 bài kiểm tra (Điểm hệ số 2)
+ Thi kết thúc môn học:
- Thang điểm: thang điểm 10.
VI. Hƣớng dẫn sử dụng chƣơng trình:
1. Phạm vi áp dụng chƣơng trình:
Chƣơng trình môn học Network Scripting đƣợc sử dụng để giảng dạy cho trình
độ cao đẳng khóa tuyển sinh năm 2017.
2. Hƣớng dẫn một số điểm chính về phƣơng pháp giảng dạy môn học:
- Tuỳ theo nội dung của mỗi bài mà giáo viên có thể sử dụng những phƣơng
pháp mang tính chất vừa truyền thống vừa hiện đại nhƣ: thuyết trình, trực quan, hoạt
động nhóm..
- Để đảm bảo và nâng cao chất lƣợng đào tạo của môn học rất cần có sự đầu tƣ
cơ sở vật chất, trang thiết bị, đồ dùng dạy học nhƣ: phòng học thực hành máy tính,
máy chiếu đa năng, giáo trình, các Video trực quan, Các thiết bị phần cứng và thiết bị
mạng máy tính
3. Những trọng tâm chƣơng trình cần chú ý:
4
- CHƢƠNG 1. NHỮNG KHÁI NIỆM CƠ BẢN
1.1. Scripts và Network Scripting
Có một câu nói nhƣ thế này, không rõ của vĩ nhân hay thƣờng dân nào nhƣng
tôi thấy quả rất chí lý: “Đưa cho một anh chàng sắp chết đói một con cá, bạn nuôi
được anh ta một ngày; nhưng nếu dạy cho anh ta cách câu cá, bạn nuôi anh ta cả
đời”.
Còn gì đúng hơn thế, và càng đúng hơn trong thế giới bận rộn của các chuyên gia công
nghệ thông tin (mà chúng ta vẫn quen miệng gọi là dân IT) khi làm việc với kỹ thuật
scripting: “Đưa cho một admin một script, bạn giúp anh ta giải quyết một vấn đề;
nhưng nếu dạy anh ta cách viết script như thế nào, bạn giúp anh ta làm được công
việc gắn liền với cả đời anh ta”.
Giá mà tự động hoá đƣợc công việc quản trị hàng ngày bằng các script, cuộc sống của
những admin sẽ thoải mái và nhẹ nhàng hơn nhiều. Tại sao cần phải biết và dùng
script? Không phải đã có hàng trăm script đƣợc viết sẵn trôi nổi trên thế giới mạng mà
bạn có thể tải về dùng một cách dễ dàng, nhƣ lấy từ nguồn trung tâm Script Center
Script Repository của Microsoft chẳng hạn. Vậy tại sao? Hàng trăm kịch bản (script)
viết sẵn, xin thƣa rằng đúng. Tải về dùng dễ dàng, xin thƣa rằng lại càng đúng. Ấy vậy
mà đúng nhƣng chƣa đủ. Chúng hữu ích và giúp đỡ bạn rất nhiều, nhƣng nhiều khi đòi
hỏi riêng theo cấu hình cụ thể trong môi trƣờng của bạn lại làm khó chúng. Có khi
trong hàng trăm hàng nghìn script tải về bạn chỉ chọn lọc đƣợc một script phù hợp mà
vẫn phải điều chỉnh đôi chút. Đơn giản vì tác giả viết ra nó không nằm trong tổ chức
của bạn, không thực hiện theo cấu hình của bạn và mối quan tâm của họ lại hƣớng đến
một cái gì khác cơ. Khi đó các admin phải trở thành những ông thợ sửa chữa lành
nghề, thay đổi chỗ này một chút, thay đổi chỗ kia một tý, ghép ghép nối nối để biến
vài scrip nhỏ lẻ thành một script hợp nhất lớn hơn hay dùng dữ liệu đầu ra của script
này làm thành dữ liệu đầu vào cho script khác, hay biến nó thành công cụ hoạt động
cho một máy từ xa… Quả là rất nhiều việc!
Anh thợ máy muốn sửa chữa đƣợc máy móc thì phải hiểu cấu trúc của nó, đó là điều
không ai phản bác. Bởi vậy mà anh “thợ” admin muốn biến đổi, điều chỉnh script thì
phải hiểu về nó, phải biết cách xây dựng và viết ra nó, biến những cái mới hay cái có
sẵn thành cái của riêng mình, phù hợp nhất với mình. Và lúc đó ngƣời ta gọi anh là
“thợ lành nghề”. Muốn đƣợc nhƣ vậy, ai cũng phải bắt đầu với những điều cơ bản
nhất, ở đây là Windows scripting. Nói đến script, nhiều ngƣời tƣởng chừng rất khó,
thực sự khó vì trƣớc hết… script rất khó dịch sang tiếng Việt! Script nghĩa là “kịch
bản”, nhƣng dân công nghệ chúng ta đâu phải là ngƣời làm phim nên kịch bản của thế
1
- giới IT chỉ toàn những đoạn mã loằng ngoằng mà chỉ có các chuyên gia mới hiểu, còn
nhiều ngƣời “thƣờng thƣờng bậc trung” nhƣ… sinh viên công nghệ thì chịu! Chính bởi
vậy mà hôm nay chúng ta sẽ bắt đầu từ những cái cơ bản nhất, sau đó nâng cao dần
khả năng hiểu những khía cạnh sâu xa hơn trong viết và dùng script ở các mạng
Windows. Mục đích cuối cùng mà chúng ta hƣớng tới là kể cả những ngƣời mới bắt
đầu tìm hiểu nhƣ bạn, nhƣ tôi đều có thể script hoá tự động công việc, để cuộc sống
của các admin an nhàn hơn. Chúng ta sẽ thực hiện điều này trên cả script do chính bạn
viết ra hoặc download về từ nhiều nguồn khác nhau. Chúng ta cũng sẽ đƣợc biết một
số tài nguyên liên quan đáng tìm hiểu để có cái nhìn sâu sắc hơn về Windows
scripting, cũng nhƣ một số công cụ trợ giúp có thể sẽ rất hữu ích trong tƣơng lai.
1.2. Các thành phần của Script
Các thiết lập TCP/IP scripting
Hầu nhƣ admin nào cũng dùng Visual Basic Script (VBScript) để viết kịch bản
quản trị Windows (Windows admin script). VBScript không chỉ là một ngôn ngữ mạnh
mà cú pháp của nó còn khá đơn giản để học và làm. VBScript có thể dùng chung với
Windows Management Instrumentation (WMI) và Active Directory Services Interfaces
(ADSI) để viết kịch bản cho bất kỳ khía cạnh nào của một hệ thống chạy hệ điều hành
Windows hay một mạng dùng Active Directory. Chúng ta sẽ bắt đầu học về Windows
scripting bằng cách dùng VBScript với WMI để thực hiện một điều sẽ rất hữu ích: thay
đổi địa chỉ IP của một network adapter.
Tại sao lại cần thực hiện điều này? Đó là do chúng ta sẽ phải sử dụng nhiều đến một
máy chủ ảo và một PC ảo để thiết lập môi trƣờng kiểm tra. Chúng ta sẽ cần phải chuyển
một máy ảo (VM) chạy hệ điều hành Windows Server 2003 từ mạng ảo này sang mạng
ảo khác để sử dụng lại server (máy chủ) cho một số mục đích khác. Nhƣ thế có nghĩa là
chúng ta sẽ cần thay đổi địa chỉ IP trên server (cũng có thể là cổng vào mặc định nữa).
Bạn có thể thực hiện điều này bằng cách mở Network Connections trong Control
Panel và kích phải chuột lên Local Area Connections, chọn Properties >
Internet Protocol (TCP/IP) trên tab General và bấm chọn Properties, nhập địa chỉ IP
mới rồi ấn OK hai lần. Đây là cách thực hiện phổ biến nhƣng nghe qua bạn đã thấy khá
dài dòng và mệt mỏi. Với những chuyên gia, họ thích sử dụng Command Promt hơn,
lệnh dùng ở đây là Netsh. Song, khi sử dụng lệnh này bạn cần cẩn trọng vì nó có nhiều
ngữ cảnh, lệnh và tham số khác nhau rất khó nhớ. Thực hiện sai một thao tác cũng có
thể dẫn đến hậu quả nghiêm trọng. Nếu chƣa thực sự chắc chắn, hãy nhờ sự giúp đỡ của
phần trợ giúp Help hoặc quay trở lại cách thứ nhất
2
- Nhƣng mục đích của chúng ta ở đây là học về script. Do đó, chúng ta sẽ xem xét cách
thay đổi địa chỉ IP của máy dùng VBScript và WMI nhƣ thế nào mà trƣớc hết là phải
biết đến một số khái niệm cơ bản nhƣ đối tƣợng (object), phƣơng thức (method), thuộc
tính (property), namespace…
Để bắt đầu, hãy chạy script trên một máy cục bộ:
strComputer = "."
Ở đây, tiền tố str- đƣợc đặt đầu đối tƣợng là để chỉ strComputer là một biến có chứa
xâu, còn dấu chấm là ký hiệu tham chiếu tới máy cục bộ và đƣợc dùng nhƣ một điểm
bắt đầu của namespace WMI. Vậy không gian tên WMI là gì? Thực ra, đó là một tập
hợp phân cấp các lớp đối tƣợng khác nhau, có thể đƣợc dùng để quản lý nhiều mặt khác
nhau của máy tính Windows. Ví dụ, có một namespace gốc và bên dƣới nó là hàng tá
namespace con khác nhƣ SECURITY, CIMV2, perfmon… Hầu hết các lớp WMI hữu
ích nằm trong không gian tên root\cimv2 và trƣớc khi làm việc với bất kỳ lớp nào trong
số đó, chúng ta cần diễn giải chúng thành các đối tƣợng. Sau đó là xem xét thuộc tính
của các đối tƣợng này và gọi phƣơng thức để thao tác chúng.
Lớp, đối tƣợng, thuộc tính, phƣơng thức - chúng là những gì? Dƣới đây là một phân
tích đơn giản có thể giúp bạn hiểu về chúng: xem xét lớp MicrowaveOven, tức tập hợp
trừu tƣợng của tất cả các lò vi sóng (không có một lò thực nào đƣợc đƣa vào trong đó
cả). Lớp này có thể có các thuộc tính: màu sắc (Color), kích thƣớc theo khối lập phƣơng
(CubicInches), mặt quay tròn (HasTurntable)… Có lẽ bạn hiểu thuộc tính chính là các
đặc điểm, tính chất đặc trƣng cho một lớp. Nói cách khác, các lò vi sóng này sẽ có một
màu nào đó, có một kích thƣớc bên trong nào đó và chúng có thể quay tròn hoặc không.
Lớp MicrowaveOven cũng có các phƣơng thức. Phƣơng thức, tức là một hàm tính toán
hoặc đƣợc định nghĩa theo một quy luật nhất định để lớp có thể thao tác hoặc bạn có thể
thao tác với lớp. Với lớp cụ thể này, một số phƣơng thức có thể dùng
là SetCookingTime (thiết lập thời gian nấu), SetPowerLevel (thiết lập mức điện sử
dụng), Reset (nấu lại)… Thông thƣờng, để gọi một phƣơng thức bạn phải đƣa tham số
vào cho nó. Ví dụ, để gọi phƣơng thức SetCookingTime (thiết lập thời gian nấu), chúng
ta có thể định nghĩa biến CookingTime (thời gian nấu) trong một số giây nhất định và
sau đó đƣa biến này vào phƣơng thức SetCookingTime thiết lập cho một trƣờng hợp cụ
thể của lớp này (một trƣờng hợp thực, không phải là lò vi sóng trong lớp trừu tƣợng).
Với WMI VBScript, chúng ta có thể thực hiện nhƣ sau:
intCookingTime = 120
errSetCookingTime = objMicrowave.SetCookingTime(intCookingTime)
3
- Nhƣng đối tƣợng lò vi sóng (objMicrowave) ở đâu ra? Chúng ta vẫn chƣa tạo nó, vì vậy
hãy tạo bằng cách dùng lệnh Set và phƣơng thức CreateObject:
Set objMicrowave = CreateObject("MicrowaveOven")
Thực ra, nếu xét kỹ hơn thì objMicrowave không phải là đối tƣợng của
lớp MicrowaveOven. Chính xác hơn nó là một đối tƣợng tham chiếu tới một thể hiện
của lớp MicrowaveOven. Nhƣng hiện tại chúng ta mới chỉ bắt đầu với những gì cơ bản
nhất nên các khía cạnh sâu hơn này sẽ đƣợc tìm hiểu ở sau.
Tiếp theo, tạo thêm biến strColor để thiết lập thuộc tính màu sắc cho lò vi sóng của
chúng ta. Đặt giá trị biến là Green (màu xanh là cây), script sẽ có dạng nhƣ bên dƣới
(với một số chú thích bên cạnh):
strColor = "Green" 'gán màu cho lò vi sóng
intCookingTime = 120 'quy định thời gian nấu (tính theo giây)
Set objMicrowave = CreateObject("MicrowaveOven") 'tạo một thể hiện của đối tượng
errSetCookingTime = objMicrowave.SetCookingTime(intCookingTime) 'gọi một
phƣơng thức để„thiết lập thời gian nấu và ghi lại đoạn mã lỗi kết quả
objMicrowave.Color = strColor 'thiết lập giá trị thuộc tính Color (màu sắc)
1.3. Điều khiển lỗi, định nghĩa biến và dữ liệu ngƣời dùng
Trở lại với script
Muốn truy cập các thiết lập cấu hình TCP/IP của máy dùng WMI, bạn cần viết mã:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Lệnh này sẽ kết nối bạn 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à thiết lập nó bằng với giá trị trả về của
phƣơng thức GetObject. Sau khi kết nối tới namespace này, bạn có thể thu thập thông
tin nhƣ bên dƣới:
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
Dòng lệnh này chạy nhƣ thế nào? Đầu tiên, bạn có thể thấy đối tƣợng có
tên objWMIService mà chúng ta vừa mô tả một phút trƣớc ở dòng bên trên. Sau đối
tƣợng này là ExecQuery, có thể là thuộc tính mà cũng có thể là phƣơng thức (cấu trúc
của lệnh luôn luôn là doituong.thuoctinh hoặc doituong.phuongthuc). Chúng ta có
thể dễ dàng đoán ra đó là một phƣơng thức vì đằng sau nó là một câu truy vấn. Phƣơng
thức ExecQuery đƣợc gọi bằng cách thêm một tham số vào nó. Tham số ở đây là một
lệnh SQL (SELECT), trả ra tập hợp (đƣợc đánh dấu bởi tiền tố “col-”) của tất cả (dấu
hoa thị) cấu hình bộ điều hợp mạng trên máy có đƣờng bao TCP/IP và đƣợc cho phép
trên bộ điều hợp. Tập hợp trả về sau khi thực hiện phƣơng thức này sẽ đƣợc gán với
4
- biến colNetAdapters.
Chúng ta có thể làm gì với tập hợp này? Khi có một tập hợp trong tay, bạn phải lặp
vòng nó, dùng một lệnh lặp nhƣ For Each. Vòng lặp tiếp theo sẽ nhƣ thế này:
For Each objNetAdapter in colNetAdapters
' do something to each network adapter's configuration
Next
Bạn luôn phải lặp vòng các tập hợp cho dù tập hợp đó chỉ có một đối tƣợng.
Bây giờ, điều chúng ta thực sự muốn là thay đổi địa chỉ IP cho adapter của mình. Vì
thế, hãy định nghĩa thêm một số biến:
arrIPAddress = Array("172.16.11.99")
arrSubnetMask = Array("255.255.255.0")
Chú ý là các biến định nghĩa địa chỉ IP và subnet mask mới phải là các biến mảng. Tại
sao lại nhƣ thế? Lý do đầu tiên là các máy tính Windows nhiều khi không phải chỉ có
một địa chỉ IP, một cổng vào mặc định… Vậy thì tại sao không dùng biến mảng cho
tất cả các thiết lập IP đƣợc nhất quán. Và lý do thứ hai, nếu tìm kiếm
lớp Win32_NetworkAdapterConfiguration trong WMI Reference trên MSDN, bạn sẽ
thấy đƣợc phải dùng đến biến mảng. Chúng ta sẽ nghiên cứu sâu hơn về WMI
Reference trong tƣơng lai, còn bây giờ thì tạm thời chấp nhận ở mức độ chƣa rõ ràng
một chút.
Cuối cùng, cần gọi phƣơng thức EnableStatic của
lớp Win32_NetworkAdapterConfiguration để thay đổi địa chỉ IP và cổng vào mặc định
của bộ điều hợp mạng sang thiết lập mới chúng ta đã định nghĩa trong các biến mảng.
Thực hiện nhƣ sau:
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
Ở đây, biến err- là cần thiết, giống nhƣ một nơi lƣu trữ đoạn mã lỗi trả về khi phƣơng
thức chạy.
1.4. Ví dụ về xây dựng và thi hành một Scripts
Bây giờ, ghép tất cả các phần lại với nhau và hãy xem chúng ta có những gì:
strComputer = "."
arrIPAddress = Array("172.16.11.99")
arrSubnetMask = Array("255.255.255.0")
5
- Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration")
For Each objNetAdapter in colNetAdapters
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
Next
Bạn biết đấy, đoạn mã này đƣa ra các định nghĩa biến, điều khiển lỗi, dùng dữ liệu đầu
vào và kiểm chứng kết quả trả về. Chúng ta sẽ sử dụng lại đoạn mã này trong những
phần sau của loạt bài, nhƣng đầu tiên hãy xem liệu nó có làm việc hay không. Ghi script
lại với tên ChangeIPAddress.vbs (nhớ là phải tắt Word Wrap trong Notepad) và copy
nó lên desktop của máy chủ có địa chỉ tĩnh 172.16.11.45. Sau đó, mở cửa sổ dòng lệnh
Command Promp với vai trò ngƣời dùng Administrator, chuyển tới thƣ mục Desktop và
chạy script, dùng Cscript.exe. Kết quả trả về:
C:\Documents and Settings\Administrator\Desktop>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.11.45
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.11.1
C:\Documents and Settings\Administrator.DC-1\Desktop>cscript
ChangeIPAddress.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
C:\Documents and Settings\Administrator\Desktop>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.11.99
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.11.1
6
- CHƢƠNG 2. KIỂM SOÁT QUẢN LÝ WINDOWS BẰNG SCRIPT
(WINDOWS MANAGEMENT INSTRUMENTATION – WMI SCRIPTS)
2.1. Giới thiệu WMI
WMI là viết tắt của Windows Management Instrumentation. Đƣợc thiết kế bởi
Microsoft, đây là một cơ sở hạ tầng để quản lý dữ liệu và thông tin đƣợc chuẩn hóa
độc lập với thiết bị. Kể từ Windows 2000, WMI đƣợc cài đặt sẵn với hệ điều hành
Windows.
- WMI là sự triển khai của Microsoft về Quản lý Doanh nghiệp Dựa trên
Web, WBEM (Web-Based Enterprise Management), đƣợc quản lý bởi DMTF
(DMTF - Distributed Management Task Force). WBEM đặt ra các tiêu chuẩn để cho
phép truy cập dữ liệu từ các công nghệ và thiết bị không đồng nhất trên một kiến trúc
tiêu chuẩn hóa. WBEM sử dụng Mô hình Thông tin Chung CIM (CIM - Common
Information Model) làm giản đồ để xác định thông tin về các đối tƣợng. Cả hai đều lƣu
trữ tệp và chấp nhận lệnh in từ máy khách (Client) và sau đó gửi chúng đến một máy
in trong mạng.
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ụ quản lý
doanh nghiệp dựa trên nền tảng Web. WBEM là công nghệ hợp tác phát triển bởi
Microsoft, Cisco, Intel, Compaq và BMC Software nhằm hỗ trợ quản lý các hệ thống
máy chủ và máy để bàn trong môi trƣờng doanh nghiệp. WMI cung cấp mô hình thể
hiện, lƣu trữ và truy vấn cấu hình, thông tin trạng thái hay nhiều khía cạnh hoạt động
khác của các máy Windows. Các nhà phát triển có thể dùng WMI để viết script hoặc
quản lý mã nguồn để xem hay chỉnh sửa các thiết lập cấu hình trên máy Windows,
xem trạng thái của các ứng dụng, dịch vụ Windows và thực hiện toàn bộ nhiều công
việc hữu ích khác của một quản trị viên nhƣ triển khai, bảo trì, gỡ lỗi các mạng
Windows.
Nói cách khác, nói tới WMI tức là nói tới:
Hệ điều hành Windows: làm việc trên môi trƣờng Windows và cho các máy chạy
Microsoft Windows.
Management: có thể đƣợc dùng để quản lý các máy tính này.
Instrumentation: cung cấp nhiều công cụ để xem và chỉnh sửa những thứ chạy bên
trong các máy tính này.
7
- Bạn có thể ví máy tính Windows giống nhƣ một chiếc xe ô tô và WMI giống nhƣ
nguồn điện hay các thiết bị điện cho phép bảng đo đồng hồ hiển thị tốc độ, nhiệt độ
động cơ, RPM… của ô tô. Bản thân các điều khiển bảng đo đồng hồ này không phải là
WMI. Bạn cần phải đƣa ra cách lấy thông tin từ bảng điện và thể hiện nó ở dạng có thể
đọc đƣợc. Viết VBScript sử dụng WMI cũng giống nhƣ tạo các bảng đo đồng hồ trung
gian, liên hệ với thiết bị bên dƣới ô tô và hiển thị thông tin đối tƣợng để có thể cho bạn
biết cần phải làm gì và điều khiển nào động cơ đang thực hiện. Nói cách khác,
Windows tích hợp tất cả công cụ dựng sẵn này qua WMI. Bạn chỉ cần biết cách làm
sao lấy chúng ra để thực hiện 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
8
- Microsoft
DEFAULT
directory
subscription
Mỗi namespace này có thể là một nguồn cho phép bạn truy vấn thông tin liên quan đến
trạng thái hay cấu hình một số yếu tố của máy tính Windows (thông thƣờng cũng có
thể chỉnh sửa cấu hình đó). Các namespace này đƣợc tổ chức theo kiểu cấu trúc phân
tầng nhƣ cấu trúc thƣ mục trên ổ cứng. Ví dụ, chúng ta có thể hiển thị tất cả
namespace dƣới namespace gốc root\CIMV2 bằng cách thay đổi dòng đầu tiên trong
script nhƣ sau:
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Khi chạy script đã đƣợc thay đổi, kết quả có dạng:
C:\scripts>cscript ShowNamespaces.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
ms_409
Applications
Thực tế, root\CIMV2 là namespace WMI mặc định trên các máy Windows. Điều này
có nghĩa là nếu bạn không mô tả một namespace để kết nối tới trong dòng đầu tiên của
script, WMI sẽ mặc định tự động kết nối tới namespace root\CIMV2. Vì thế, nếu
chúng ta thay đổi dòng đầu tiên thành:
Set objWMIService = GetObject("winmgmts:\\")
thì kết quả cũng giống nhƣ trên. Chú ý là chúng ta có thể bỏ phần trƣớc trong
winmgmts:\\.\root\CIMV2 đi. Nhớ lại trong bài một, phần trƣớc thể hiện máy cục bộ
và mặc định WMI cho rằng bạn muốn làm việc với máy cục bộ. Nhƣng thực tế, khi
viết script ngƣời ta thƣờng sử dụng các biến (và định nghĩa chúng). Vì thế ở đây chúng
ta có thể dùng một script phổ biến hơn để hiển thị các namespace:
Option Explicit
On Error Resume Next
Dim strComputer
9
- 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
On Error Resume Next
Dim strComputer
Dim strWMINamespace
Dim objWMIService
Dim colWin32Providers
Dim objWin32Provider
strComputer = "."
strWMINamespace = "\root\CIMV2"
10
- Set objWMIService = GetObject("winmgmts:\\" & strComputer &
strWMINamespace)
Set colWin32Providers = objWMIService.InstancesOf("__Win32Provider")
For Each objWin32Provider In colWin32Providers
WScript.Echo objWin32Provider.Name
Next
Và kết quả sau khi chạy script này trên một máy Windows XP là:
C:\scripts>cscript ShowProviders.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
Win32_WIN32_TSLOGONSETTING_Prov
MS_NT_EVENTLOG_PROVIDER
Win32_WIN32_TSENVIRONMENTSETTING_Prov
SCM Event Provider
ProviderSubSystem
VolumeChangeEvents
NamedJobObjectLimitSettingProv
HiPerfCooker_v1
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_COMPUTERSYSTEMWINDOWSPRODUCTACTIVATIONSETTING_
Prov
Win32_WIN32_TSSESSIONDIRECTORY_Prov
CmdTriggerConsumer
Standard Non-COM Event Provider
SessionProvider
WBEMCORE
RouteEventProvider
WhqlProvider
11
- Win32_WIN32_TSSESSIONSETTING_Prov
Win32_WIN32_TERMINALTERMINALSETTING_Prov
Win32_WIN32_TSCLIENTSETTING_Prov
Win32_WIN32_TERMINALSERVICESETTING_Prov
WMI Kernel Trace Event Provider
Win32_WIN32_PROXY_Prov
NamedJobObjectProv
MS_Shutdown_Event_Provider
SECRCW32
Win32ClockProvider
MS_Power_Management_Event_Provider
Win32_WIN32_WINDOWSPRODUCTACTIVATION_Prov
RouteProvider
Cimwin32A
Msft_ProviderSubSystem
Win32_WIN32_TERMINALSERVICETOSETTING_Prov
NamedJobObjectSecLimitSettingProv
Win32_WIN32_TSSESSIONDIRECTORYSETTING_Prov
Win32_WIN32_TSPERMISSIONSSETTING_Prov
Win32_WIN32_TSACCOUNT_Prov
Win32_WIN32_TERMINAL_Prov
MSIProv
DskQuotaProvider
NetDiagProv
Win32_WIN32_TSGENERALSETTING_Prov
CIMWin32
NamedJobObjectActgInfoProv
NT5_GenericPerfProvider_V1
WMI Self-Instrumentation Event Provider
MS_NT_EVENTLOG_EVENT_PROVIDER
Nghe chừng có vẻ quá nhiều! Nhƣng dùng danh sách các nhà cung cấp này, bạn có
thể dễ dàng tìm kiếm trên MSDN để biết thêm thông tin về một nhà cung cấp cụ thể và
tìm kiếm phƣơng thức hỗ trợ
12
- 2. 2. Nguyên tắc hoạt động của WMI
- Để hoạt động nhƣ một máy chủ (Server), một thiết bị phải đƣợc cấu hình để lắng
nghe các yêu cầu từ máy khách (Client) trên kết nối mạng. Chức năng này có thể tồn
tại nhƣ một phần của hệ điều hành nhƣ một ứng dụng, vai trò đã cài đặt hoặc kết hợp
cả hai. Ví dụ: hệ điều hành Windows Server của Microsoft cung cấp chức năng lắng
nghe và phản hồi các yêu cầu của máy khách. Các vai trò (Roles) hoặc dịch vụ
(Service) đƣợc cài đặt bổ sung làm tăng loại yêu cầu máy khách mà máy chủ có thể
đáp ứng. Trong một ví dụ khác, máy chủ Apache Web server phản hồi các yêu cầu của
trình duyệt Internet thông qua một ứng dụng bổ sung, Apache, đƣợc cài đặt trên cùng
một hệ điều hành.
- Khi một máy khách yêu cầu dữ liệu hoặc chức năng từ máy chủ, nó sẽ gửi một yêu
cầu qua mạng. Máy chủ nhận đƣợc yêu cầu này và phản hồi với thông tin thích hợp.
Đây là mô hình yêu cầu và phản hồi của mạng máy khách-máy chủ, còn đƣợc gọi là
mô hình gọi và phản hồi (Call and Response Model). Máy chủ thƣờng sẽ thực hiện
nhiều tác vụ bổ sung nhƣ là một phần của một yêu cầu và phản hồi, bao gồm xác minh
danh tính của ngƣời yêu cầu, đảm bảo rằng máy khách có quyền truy cập vào dữ liệu
hoặc tài nguyên đƣợc yêu cầu và định dạng đúng hoặc trả lại phản hồi cần thiết theo
dự kiến đƣờng.
- Khi các thiết bị trên mạng hoạt động, các cài đặt, thông số và trạng thái khác
nhau có thể đƣợc đo và tạo tại bất kỳ thời điểm nào. Ví dụ, ổ đĩa cứng có tổng dung
lƣợng lƣu trữ, dung lƣợng lƣu trữ đã sử dụng, dung lƣợng lƣu trữ trống hoặc nhiệt độ
bên trong. Các giá trị này là động và thay đổi theo cách sử dụng hệ thống. Tại bất kỳ
thời điểm nào, việc đọc các thông số này trong thiết bị vẫn tồn tại cho dù có ai để ý
đến chúng hay không
- Nền tảng WMI platform cung cấp một cách thống nhất để tạo và thực thi các tập
lệnh (script) đọc các thông số và trong một số trƣờng hợp, có thể thay đổi các cài đặt
đó mà không cần cài đặt thêm các tác nhân phần mềm (gọi là Agent) hoặc màn hình
(Monitor). Trong trƣờng hợp của ổ cứng, WMI Provider có thể trả lời yêu cầu về nhiệt
độ của ổ cứng cũng nhƣ gửi cảnh báo đến Trình quản lý đối tƣợng WMI Object
Manager nếu nhiệt độ vƣợt quá mức đặt trƣớc.
- Ngoài ra, đối với các ứng dụng quản lý, nền tảng WMI cung cấp Giao diện lập
trình ứng dụng API (API - Application Programming Interface) ở cấp Trình quản lý
đối tƣợng WMI Object Manager để không cần phải hiểu chi tiết cụ thể của từng nhà
cung cấp WMI. Ví dụ, ứng dụng quản lý chỉ cần gọi Trình quản lý đối tƣợng WMI
Object Manager chứ không cần truy vấn trực tiếp ổ cứng.
13
- - Khi một thiết bị đƣợc truy vấn hoặc một sự kiện đƣợc kích hoạt, dữ liệu sẽ truyền
qua kiến trúc tiêu chuẩn của thiết bị đƣợc quản lý thông qua WMI Provider của nó đến
Trình quản lý đối tƣợng WMI Object Manager và tới WMI Consumer. Toàn bộ cơ sở
hạ tầng này đƣợc chuẩn hóa trên các thiết bị và nền tảng để bất kỳ phần mềm quản lý
doanh nghiệp hỗ trợ WMI nào cũng có thể truy cập dữ liệu đƣợc thu thập trên bất kỳ
thiết bị hỗ trợ WMI nào mà không cần biết bất kỳ điều gì về các thiết bị hoặc cấu trúc
mạng giữa chúng. WMI có sẵn trên bất kỳ máy tính Windows hiện tại nào và do đó có
thể đƣợc quản lý thông qua WMI
2.3. Các lớp WMI
Bên cạnh namespace và provider (nhà cung cấp), bạn cũng cần phải hiểu về các
lớp WMI nếu muốn tăng cƣờng thêm sức mạnh của WMI cho các hoạt động quản trị
Windows trên script. Lớp là một mẫu của kiểu đối tƣợng bạn có thể quản lý bằng
WMI. Ví dụ lớp có tên Win32_LogicalDisk là một mẫu đĩa logic trên các máy
Windows, và WMI dùng lớp này để tạo một thể hiện của Win32_LogicalDisk cho
từng đĩa đƣợc cài.
Dƣới đây là một script có tên ShowClasses.vbs hiển thị tất cả các lớp (có khả năng là
các đối tƣợng có thể quản lý) của namespace root\CIMV2:
Option Explicit
On Error Resume Next
Dim strComputer
Dim strWMINamespace
Dim objWMIService
Dim colClasses
Dim objClass
strComputer = "."
strWMINamespace = "\root\CIMV2"
Set objWMIService = GetObject("winmgmts:\\" & strComputer &
strWMINamespace)
Set colClasses = objWMIService.SubclassesOf()
For Each objClass In colClasses
WScript.Echo objClass.Path_.Path
Next
Và một số kết quả sau khi chạy script này trên máy Windows XP:
14
nguon tai.lieu . vn