Qun lý các mng Windows dùng Script - Phn 1: Nhng khái nim cơ bn
Ngu
n:quantrimang.com
Mitch Tulloch
Đây là phn đu tiên trong lot bài v các mng Windows scripting. Phn
này đề cp đến nhng khái nim cơ bn nht v k thut scripting (k thut
viết kch bn) trong các mng chy h điu hành Windows. Nhng phn
còn li ca lot bài s chuyn đến các bn ni dung chi tiết ca nhiu khía
cnh khác nhau trong ch đề này.
Có mt câu nói như thế này, không rõ ca vĩ nhân hay thường dân nào nhưng
tôi thy qu rt chí lý: “Đưa cho mt anh chàng sp chết đói mt con cá, bn
nuôi được anh ta mt ngày; nhưng nếu dy cho anh ta cách câu cá, bn nuôi
anh ta c đời”.
Còn gì đúng hơn thế, và càng đúng hơn trong thế gii bn rn ca các chuyên
gia công ngh thông tin (mà chúng ta vn quen ming gi là dân IT) khi làm vic
vi k thut scripting: “Đưa cho mt admin mt script, bn giúp anh ta gii quyết
mt vn đề; nhưng nếu dy anh ta cách viết script như thế nào, bn giúp anh ta
làm được công vic gn lin vi c đời anh ta”.
Giá mà t động hoá được công vic qun tr hàng ngày bng các script, cuc
sng ca nhng admin s thoi mái và nh nhàng hơn nhiu. Ti sao cn phi
biết và dùng script? Không phi đã có hàng trăm script được viết sn trôi ni trên
thế gii mng mà bn có th ti v dùng mt cách d dàng, như ly t ngun
trung tâm Script Center Script Repository ca Microsoft chng hn. Vy ti sao?
Hàng trăm kch bn (script) viết sn, xin thưa rng đúng. Ti v dùng d dàng,
xin thưa rng li càng đúng. y vy mà đúng nhưng chưa đủ. Chúng hu ích và
giúp đỡ bn rt nhiu, nhưng nhiu khi đòi hi riêng theo cu hình c th trong
môi trường ca bn li làm khó chúng. Có khi trong hàng trăm hàng nghìn script
ti v bn ch chn lc được mt script phù hp mà vn phi điu chnh đôi chút.
Đơn gin vì tác gi viết ra nó không nm trong t chc ca bn, không thc hin
theo cu hình ca bn và mi quan tâm ca h li hướng đến mt cái gì khác
cơ. Khi đó các admin phi tr thành nhng ông th sa cha lành ngh, thay
đổi ch này mt chút, thay đổi ch kia mt tý, ghép ghép ni ni để biến vài scrip
nh l thành mt script hp nht ln hơn hay dùng d liu đầu ra ca script này
làm thành d liu đầu vào cho script khác, hay biến nó thành công c hot động
cho mt máy t xa… Qu là rt nhiu vic!
Anh th máy mun sa cha được máy móc thì phi hiu cu trúc ca nó, đó là
điu không ai phn bác. Bi vy mà anh “th” admin mun biến đổi, điu chnh
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
script thì phi hiu v nó, phi biết cách xây dng và viết ra nó, biến nhng cái
mi hay cái có sn thành cái ca riêng mình, phù hp nht vi mình. Và lúc đó
người ta gi anh là “th lành ngh”. Mun được như vy, ai cũng phi bt đầu
vi nhng điu cơ bn nht, đây là Windows scripting. Nói đến script, nhiu
người tưởng chng rt khó, thc s khó vì trước hết… script rt khó dch sang
tiếng Vit! Script nghĩa là “kch bn”, nhưng dân công ngh chúng ta đâu phi là
người làm phim nên kch bn ca thế gii IT ch toàn nhng đon mã long
ngong mà ch có các chuyên gia mi hiu, còn nhiu người “thường thường
bc trung” như… sinh viên công ngh thì chu! Chính bi vy mà hôm nay chúng
ta s bt đầu t nhng cái cơ bn nht, sau đó nâng cao dn kh năng hiu
nhng khía cnh sâu xa hơn trong viết và dùng script các mng Windows. Mc
đích cui cùng mà chúng ta hướng ti là k c nhng người mi bt đầu tìm
hiu như bn, như tôi đều có th script hoá t động công vic, để cuc sng ca
các admin an nhàn hơn. Chúng ta s thc hin điu này trên c script do chính
bn viết ra hoc download v t nhiu ngun khác nhau. Chúng ta cũng s được
biết mt s tài nguyên liên quan đáng tìm hiu để có cái nhìn sâu sc hơn v
Windows scripting, cũng như mt s công c tr giúp có th s rt hu ích trong
tương lai.
Các thiết lp TCP/IP scripting
Hu như admin nào cũng dùng Visual Basic Script (VBScript) để viết kch bn
qun tr Windows (Windows admin script). VBScript không ch là mt ngôn ng
mnh mà cú pháp ca nó còn khá đơn gin để hc và làm. VBScript có th dùng
chung vi Windows Management Instrumentation (WMI) và Active Directory
Services Interfaces (ADSI) để viết kch bn cho bt k khía cnh nào ca mt h
thng chy h điu hành Windows hay mt mng dùng Active Directory. Chúng
ta s bt đầu hc v Windows scripting bng cách dùng VBScript vi WMI để
thc hin mt điu s rt hu ích: thay đổi địa ch IP ca mt network adapter.
Ti sao li cn thc hin điu này? Đó là do chúng ta s phi s dng nhiu đến
mt máy ch o và mt PC o để thiết lp môi trường kim tra. Chúng ta s cn
phi chuyn mt máy o (VM) chy h điu hành Windows Server 2003 t mng
o này sang mng o khác để s dng li server (máy ch) cho mt s mc đích
khác. Như thế có nghĩa là chúng ta s cn thay đổi địa ch IP trên server (cũng
có th là cng vào mc định na). Bn có th thc hin điu này bng cách m
Network Connections trong Control Panel và kích phi chut lên Local Area
Connections, chn Properties > Internet Protocol (TCP/IP) trên tab General
và bm chn Properties, nhp địa ch IP mi ri n OK hai ln. Đây là cách thc
hin ph biến nhưng nghe qua bn đã thy khá dài dòng và mt mi. Vi nhng
chuyên gia, h thích s dng Command Promt hơn, lnh dùng đây là Netsh.
Song, khi s dng lnh này bn cn cn trng vì nó có nhiu ng cnh, lnh và
tham s khác nhau rt khó nh. Thc hin sai mt thao tác cũng có th dn đến
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
hu qu nghiêm trng. Nếu chưa thc s chc chn, hãy nh s giúp đỡ ca
phn tr giúp Help hoc quay tr li cách th nht.
Nhưng mc đích ca chúng ta đây là hc v script. Do đó, chúng ta s xem xét
cách thay đổi địa ch IP ca máy dùng VBScript và WMI như thế nào mà trước
hết là phi biết đến mt s khái nim cơ bn như đối tượng (object), phương
thc (method), thuc tính (property), namespace…
Để bt đầu, hãy chy script trên mt máy cc b:
strComputer = "."
đây, tin t str- được đặt đầu đối tượng là để ch strComputer là mt biến có
cha xâu, còn du chm là ký hiu tham chiếu ti máy cc bđược dùng
như mt đim bt đầu ca namespace WMI. Vy không gian tên WMI là gì?
Thc ra, đó là mt tp hp phân cp các lp đối tượng khác nhau, có th được
dùng để qun lý nhiu mt khác nhau ca máy tính Windows. Ví d, có mt
namespace gc và bên dưới nó là hàng tá namespace con khác như
SECURITY, CIMV2, perfmon… Hu hết các lp WMI hu ích nm trong không
gian tên root\cimv2 và trước khi làm vic vi bt k lp nào trong s đó, chúng ta
cn din gii chúng thành các đối tượng. Sau đó là xem xét thuc tính ca các
đối tượng này và gi phương thc để thao tác chúng.
Lp, đối tượng, thuc tính, phương thc - chúng là nhng gì? Dưới đây là mt
phân tích đơn gin có th giúp bn hiu v chúng: xem xét lp MicrowaveOven,
tc tp hp tru tượng ca tt c các lò vi sóng (không có mt lò thc nào được
đưa vào trong đó c). Lp này có th có các thuc tính: màu sc (Color), kích
thước theo khi lp phương (CubicInches), mt quay tròn (HasTurntable)… Có
l bn hiu thuc tính chính là các đặc đim, tính cht đặc trưng cho mt lp.
Nói cách khác, các lò vi sóng này s có mt màu nào đó, có mt kích thước bên
trong nào đó và chúng có th quay tròn hoc không.
Lp MicrowaveOven cũng có các phương thc. Phương thc, tc là mt hàm
tính toán hoc được định nghĩa theo mt quy lut nht định để lp có th thao
tác hoc bn có th thao tác vi lp. Vi lp c th này, mt s phương thc có
th dùng là SetCookingTime (thiết lp thi gian nu), SetPowerLevel (thiết lp
mc đin s dng), Reset (nu li)… Thông thường, để gi mt phương thc
bn phi đưa tham s vào cho nó. Ví d, để gi phương thc SetCookingTime
(thiết lp thi gian nu), chúng ta có th định nghĩa biến CookingTime (thi gian
nu) trong mt s giây nht định và sau đó đưa biến này vào phương thc
SetCookingTime thiết lp cho mt trường hp c th ca lp này (mt trường
hp thc, không phi là lò vi sóng trong lp tru tượng). Vi WMI VBScript,
chúng ta có th thc hin như sau:
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
intCookingTime = 120
errSetCookingTime =
objMicrowave.SetCookingTime(intCookingTime)
Nhưng đối tượng lò vi sóng (objMicrowave) đâu ra? Chúng ta vn chưa to nó,
vì vy hãy to bng cách dùng lnh Set và phương thc CreateObject:
Set objMicrowave = CreateObject("MicrowaveOven")
Thc ra, nếu xét k hơn thì objMicrowave không phi là đối tượng ca lp
MicrowaveOven. Chính xác hơn nó là mt đối tượng tham chiếu ti mt th hin
ca lp MicrowaveOven. Nhưng hin ti chúng ta mi ch bt đầu vi nhng gì
cơ bn nht nên các khía cnh sâu hơn này s được tìm hiu sau.
Tiếp theo, to thêm biến strColor để thiết lp thuc tính màu sc cho lò vi sóng
ca chúng ta. Đặt giá tr biến là Green (màu xanh là cây), script s có dng như
bên dưới (vi mt s chú thích bên cnh):
strColor = "Green" 'gán màu cho lò vi sóng
intCookingTime = 120 'quy định thi gian nu (tính theo
giây)
Set objMicrowave = CreateObject("MicrowaveOven") 'to mt
th hin ca đối tượng
errSetCookingTime =
objMicrowave.SetCookingTime(intCookingTime) 'gi mt phương
thc để
‘thiết lp
thi gian nu và ghi li đon mã li kết qu
objMicrowave.Color = strColor 'thiết lp giá tr thuc tính
Color (màu sc)
Cũng không quá khó phi không các bn!
Tr li vi script
Mun truy cp các thiết lp cu hình TCP/IP ca máy dùng WMI, bn cn viết
mã:
Set objWMIService = GetObject("winmgmts:\\" & strComputer &
"\root\cimv2")
Lnh này s kết ni bn ti namespace root\cimv2 trên máy cc b bng cách
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
định nghĩa mt đối tượng có tên objWMIService và thiết lp nó bng vi giá tr
tr v ca phương thc GetObject. Sau khi kết ni ti namespace này, bn có
th thu thp thông tin như bên dưới:
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
Dòng lnh này chy như thế nào? Đầu tiên, bn có th thy đối tượng có tên
objWMIService mà chúng ta va mô t mt phút trước dòng bên trên. Sau đối
tượng này là ExecQuery, có th là thuc tính mà cũng có th là phương thc
(cu trúc ca lnh luôn luôn là doituong.thuoctinh hoc
doituong.phuongthuc). Chúng ta có th d dàng đoán ra đó là mt phương
thc vì đằng sau nó là mt câu truy vn. Phương thc ExecQuery được gi
bng cách thêm mt tham s vào nó. Tham s đây là mt lnh SQL
(SELECT), tr ra tp hp (được đánh du bi tin tcol-”) ca tt c (du
hoa th) cu hình b điu hp mng trên máy có đường bao TCP/IP và được cho
phép trên b điu hp. Tp hp tr v sau khi thc hin phương thc này s
được gán vi biến colNetAdapters.
Chúng ta có th làm gì vi tp hp này? Khi có mt tp hp trong tay, bn phi
lp vòng nó, dùng mt lnh lp như For Each. Vòng lp tiếp theo s như thế
này:
For Each objNetAdapter in colNetAdapters
' do something to each network adapter's configuration
Next
Bn luôn phi lp vòng các tp hp cho dù tp hp đó ch có mt đối tượng.
Bây gi, điu chúng ta thc s mun là thay đổi địa ch IP cho adapter ca mình.
Vì thế, hãy định nghĩa thêm mt 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 mi phi là các biến
mng. Ti sao li như thế? Lý do đầu tiên là các máy tính Windows nhiu khi
không phi ch có mt địa ch IP, mt cng vào mc định… Vy thì ti sao không
dùng biến mng cho tt c các thiết lp IP được nht quán. Và lý do th hai, nếu
tìm kiếm lp Win32_NetworkAdapterConfiguration trong WMI Reference trên
MSDN, bn s thy được phi dùng đến biến mng. Chúng ta s nghiên cu
sâu hơn v WMI Reference trong tương lai, còn bây gi thì tm thi chp nhn
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com