
Quản lý các mạng Windows dùng Script - Phần 1: Những khái niệm cơ
bản

Đây là phần đầu tiên trong loạt bài về các mạng Windows scripting.
Phần này đề cập đến những khái niệm cơ bản nhất về kỹ thuật scripting
(kỹ thuật viết kịch bản) trong các mạng chạy hệ điều hành Windows.
Những phần còn lại của loạt bài sẽ chuyển đến các bạn nội dung chi tiết
của nhiều khía cạnh khác nhau trong chủ đề này.
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ế 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.
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.
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.

