Tải bản đầy đủ (.pdf) (12 trang)

Quản lý mạng Windows bằng Script - Phần 10: Các thủ thuật của kịch bản điều khiển xa potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (222.51 KB, 12 trang )

Quản lý mạng Windows bằng Script - Phần 10: Các thủ thuật của kịch
bản điều khiển xa
Trong các bài viết trước, chúng ta đã được giới thiệu về một số khái niệm và các
vấn đề xung quanh kịch bản điều khiển xa trên nền Windows. Trong phần này
chúng tôi sẽ tiếp tục giới thiệu cho các bạn hai thủ thuật liên quan đến kịch bản
điều khiển xa này qua sử dụng kịch bản WMI được viết bằng VBScript.

Thủ thuật 1: Tạo Cscript.exe, cấu hình kịch bản mặc định trên các máy tính từ xa

Đây là thủ thuật đầu tiên và nó thực sự đơn giản nhưng cũng khá thông minh do đó
chúng ta cần phải có một số kiến thức cơ bản để dễ dàng tiếp cận. Bảo đảm rằng
bạn biết một số cách để khởi chạy kịch bản trên các máy tính Windows. Ví dụ, nếu
bạn có kịch bản ChangeIPAddress.vbs trên một máy tính thì có thể khởi chạy nó
bằng cách:
- Kích đúp vào file .vbs hoặc shortcut trỏ đến file.

- Kích Start, sau đó kích Run, nhập vào ChangeIPAddress.vbs và kích OK.

- Mở một cửa sổ lệnh và điều hướng đến thư mục có kịch bản, nhập vào
ChangeIPAddress.vbs sau đó nhấn ENTER.

Điều gì sẽ xảy ra nếu bạn thực hiện những thứ này, câu trả lời đó phụ thuộc vào
những thiết lập mặc định nào được đặt cho Windows Script Host (WSH) trên máy
tính của bạn. Windows Script Host (WSH) là một ngôn ngữ kịch bản độc lập dùng
cho các scripting engine, có nghĩa là WSH sử dụng scripting engine là VBScript để
chạy các kịch bản VBScript, vì vậy WSH hành động như “môi trường” bên trong
mà kịch bản của bạn chạy. Tuy nhiên WSH thực sự có hai cấu hình kịch bản mặc
định:

- Wscript.exe, cung cấp một hộp thoại trên Windows cho việc thiết lập các thuộc
tính kịch bản và hiển thị đầu ra kịch bản.



- Cscript.exe, cho phép cấu hình các thuộc tính kịch bản và hiển thị đầu ra kịch bản
từ cửa sổ lệnh.

Hãy xem sự khác nhau giữa chúng trong trường hợp bạn không biết hoặc quên.
Chúng tôi sẽ sử dụng kịch bản ChangeIPAddress.vbs từ phần 2 của loạt bài này để
minh chứng. Hãy mở cửa sổ lệnh trên máy tính Windows Vista và sử dụng kịch
bản này để thay đổi địa chỉ IP của máy tính thành 172.16.11.173. Bây giờ việc đầu
tiên cần chú ý đó là thay đổi các thiết lập cấu hình mạng cần thiết những tiêu chuẩn
quản trị cục bộ trên máy, để thực hiện điều này chúng ta cần kích chuột phải vào
shortcut của cửa sổ lệnh dưới Accessories và chọn Run As Administrator. Khi thực
hiện điều đó thì cửa sổ User Account Control (UAC) xuất hiện, kích Continue để
tiếp tục (nếu tài khoản người dùng đầu tiên là một thành viên trong nhóm quản trị
cục bộ trên máy) hoặc nhập vào các thông tin quan trọng của tài khoản quản trị cục
bộ (nếu tài khoản chỉ là một thành viên của nhóm người dùng cục bộ trên máy).

Mở cửa sổ lệnh mức quản trị và đánh lệnh để thay đổi địa chỉ của máy tính (Hình
1).

Hình 1: Thay đổi địa chỉ IP dùng kịch bản
Điều gì sẽ xảy ra khi chúng ta nhấn ENTER, khi nhấn xong một vài giây sau, hộp
thoại dưới đây sẽ xuất hiện (Hình 1)

Hình 2: Đầu ra của kịch bản xuất hiện như một hộp thoại
Thông báo này đến từ đâu? Bạn hãy nhớ lại rằng kịch bản của chúng ta Change
IPAddress.vbs gồm có các dòng dưới đây ở cuối của kịch bản:
'Display result or error code
If errEnableStatic=0 Then
Wscript.Echo "Adapter's IP address has been successfully changed to " &
strAddress

Else
Wscript.Echo "Changing the adapter's address was not successful. Error code "
& errEnableStatic
End If
Vậy những gì đang xảy ra là lệnh Wscript.Echo đang hiển thị đầu ra (nghĩa là hiển
thị một hộp thoại) thay vì hiển thị đầu ra bên trong cửa sổ lệnh. Lý do là vì mặc
định Wscript.exe có cấu hình kịch bản mặc định và cấu hình này được thiết lập cho
những gì nó hiển thị đầu ra bằng cửa sổ giống như vậy.

Chúng ta có thể dừng các hành vi này và lấy đầu ra kịch bản để hiển thị bên trong
cửa sổ lệnh được không? Có một cách có thể giải quyết được nhiệm vụ này đó là
triệu gọi Cscript.exe được cấu hình kịch bản dòng lệnh khi chạy kịch bản. Bạn có
thể thực hiện được điều này như hình 3 dưới đây:

Hình 3: Sử dụng cscript.exe xuất đầu ra kịch bản bên trong cửa sổ lệnh
Tuy nhiên cách này có thể làm phiền bạn vì phải đánh cscript trước khi đánh tên
kịch bản giống như vậy, vì vậy bạn có thể thiết lập Cscript.exe như một cấu hình
kịch bản mặc định cho tất cả triệu gọi WSH bằng thực hiện này (Hình 4):

Hình 4: Tạo cscript.exe cho cấu hình mặc định
Bây giờ chúng ta có thể chạy kịch bản và hiển thị đầu ra của nó từ bên trong cửa sổ
lệnh mà không cần phải đánh cscript trước (Hình 5):

Hình 5: Khi Cscript.exe là cấu hình kịch bản mặc định thì đầu ra
của kịch bản được hiển thị bên trong cửa sổ lệnh
Chúng ta có một nhóm kịch bản giống ChangeIPAddress.vbs mà muốn chạy từ xa
bằng cách triển khai chúng đến các máy đích như kịch bản đăng nhập hoặc khởi
động kịch bản bằng Group Policy. Bên cạnh đó một số kịch bản có các câu lệnh
Wscript.Echo trong chúng tạo đầu ra kịch bản. Điều gì sẽ xảy ra khi một trong các
kịch bản đó được triển khai cho máy tính điều khiển xa và chạy trên máy? Một loạt

các cửa sổ sẽ xuất hiện trên màn hình desktop của người dùng như kịch bản chạy
trên máy, và người dùng sẽ phải kích OK, OK và OK,… cho tới khi các cửa sổ bật
ra này biến mất hết và kịch bản kết thúc công việc của nó. Vậy có cách nào để
khắc phục hiện tượng này?

Chúng ta có thể khắc phục hiện tượng này bằng hai cách. Đầu tiên, bạn có thể soạn
thảo tất cả các kịch bản xóa hoặc chú thích câu lệnh Wscript.Echo để kịch bản
không tạo ra bất cứ đầu ra nào. Đó là một chút trở ngại, đặc biệt nếu bạn có một số
lượng lớn kịch bản. Vì vậy phương pháp thứ hai là gì? Đây là một mẹo nhỏ mà
chúng tôi muốn chia sẻ với bạn:

Trong môi trường Active Directory trong Group Policy đang được sử dụng để quản
lý các máy tính desktop, bạn có thể thay đổi cấu hình kịch bản từ Wscript.exe
thành Cscript.exe trên các máy tính trong một OU bằng các bước dưới đây:
1. Sử dụng Notepad để tạo một file văn bản có tên là ChangeToCscript.bat với hai
dòng dưới đây trong nó:
@echo off
cscript //h:cscript //s

2. Mở GPO được liên kết đến OU và điều hướng đến Computer
Configuration\Windows Settings\Scripts\Startup.

3. Kích đúp vào thiết lập chính sách khởi động Startup để mở trang thuộc tính của
nó.

4. Kích nút Show Files và copy/paste file ChangeToCscript.bat từ Windows
Explorer vào thư mục con của SYSVOL, nơi các kịch bản khởi động được đặt.

5. Kích nút Add trên trang thuộc tính cho thiết lập chính sách khởi động.


6. Kích nút Browse và chọn ChangeToCscript.bat.

7. Đóng tất cả các trang thuộc tính.

8. Việc bổ sung thêm kịch bản khởi động này sẽ làm cho kịch bản mặc định trên
các máy tính mục tiêu được chuyển từ Wscript.exe thành Cscript.exe trong lần
khởi động lại tiếp theo của các máy tính đó, và điều này sẽ làm việc mà không cần
quan tâm đến người dùng mục tiêu là người dùng chuẩn hay quản trị viên cục bộ.
Lưu ý: ChangeToCscript.bat phải được chạy như một kịch bản khởi động và không
là kịch bản đăng nhập. Nếu bạn chạy nó như một kịch bản đăng nhập thì nó sẽ chỉ
làm việc khi người dùng mục tiêu là quản trị viên trên máy tính.

Bạn có thể làm gì với chỉ một file có hai dòng? Bây giờ bạn có thể triển khai các
kịch bản mà bạn muốn đối với các máy tính mục tiêu và không phải lo lắng về
người dùng gặp phải rất nhiều cửa sổ pop-up xuất hiện trên màn hình của họ.

Thủ thuật 2: Thực hiện “runAs” mà không cần các thông tin chỉ định

Thủ thuật thứ hai được đệ trình với chúng tôi bởi một trong các độc giả sau khi đã
đọc các phần trước loạt bài này. Chúng tôi được phép trích dẫn trực tiếp từ email
giải thích của anh ấy:

FYI là cách tôi thực hiện ‘runAs’ mà không cần phải nhập vào các thông tin quan
trọng khác, là sử dụng tài khoản quản trị viên cục bộ cho WMI, sau đó lưu mật
khẩu quản trị trong một file văn bản trên một mạng chia sẻ được bảo vệ bởi sự cho
phép NTFS. Ví dụ, nếu ‘tech1’, ‘tech4’ và ‘tech5’ là các tài khoản miền thông
thường (không phải quản trị miền), nhưng các người dùng này được thẩm định để
chạy kịch bản WMI, sau đó tôi cho phép truy cập NTFS các tài khoản này thành
file văn bản, file văn bản này gồm có mật khẩu quản trị cục bộ. Sau đó có kịch bản
nhập passwword và kết nối bằng sử dụng Set objWMIService =

GetObject("winmgmts:\\" & strComputer & "\root\cimv2", strComputer &
“\Administrator”, strImportedPassword).

Ở trên là không đúng 100%. Tôi sử dụng.
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
objSWbemLocator.Security_.Privileges.AddAsString("SeSecurityPrivilege")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer,
"root\cimv2", strComputer & "\administrator", strPWD, "", "", &H80)
Set objReg = objSWbemLocator.ConnectServer(strComputer, "root\default",
strComputer & "\administrator", strPWD, "", "", &H80)
Set oReg = objReg.Get("StdRegProv")

…để hoàn thành thứ tương tự.

Việc kết nối với tài khoản quản trị cục bộ lại có hiệu quả thú vị khác; nó không để
lại bản sao profile tài khoản quản trị miền của bạn trên máy tính trong Documents
and Settings. Khi sử dụng tài khoản miền của mình, tôi đã có một số người dùng
hỏi “Tại sao bạn được kết nối vào máy tính của tôi” và việc phân vân rằng đang
xảy ra việc rình mò gì đó. Bằng cách sử dụng tài khoản quản trị cục bộ, họ không
nhận ra bất cứ ai đã kết nối (họ được khóa không cho xem các bản ghi bảo mật).

Với bản ghi, trong thực tế chúng ta có một cặp mật khẩu quản trị cục bộ khác nhau
sử dụng ở đây; vì vậy kịch bản nhập vào một danh sách và thử từng cái một cho tới
khi thành công hoặc hết các tùy chọn.

×