Quản lý các mạng Windows dùng script - Phần 6: Những bước đầu tiên
về scripting remote
Tìm hiểu kỹ thuật scripting remote (viết kịch bản chạy trên các máy từ
xa) sử dụng lớp WMI Win32_NetworkAdapterConfiguration đã được
giới thiệu ở phần trước. Trở lại với script ChangeIPAddress.vbs mà chúng ta đã phát triển ở các
phần trước để thay đổi địa chỉ IP của một bộ điều hợp mạng:
Option Explicit
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim strAddress
Dim arrIPAddress
Dim arrSubnetMask
Dim colNetAdapters
Dim errEnableStatic
If WScript.Arguments.Count = 0 Then
Wscript.Echo "Usage: ChangeIPAddress.vbs new_IP_address"
WScript.Quit
End If
strComputer = "."
strAddress = Wscript.Arguments.Item(0)
arrIPAddress = Array(strAddress)
arrSubnetMask = Array("255.255.255.0")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
IP Address. . . . . . . . . . . . : 172.16.11.54
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.11.1
C:\locatest>
Chú ý 1: Nên nhớ rằng, để thay đổi địa chỉ IP trên máy Windows XP đòi hỏi phải sử dụng đặc
quyền quản trị cục bộ. Do đó, nếu bạn hiện đang đăng nhập vào máy với vai trò người dùng miền
bình thường, cần phải mở cửa sổ Command Prompt, sau đó gõ lệnh: runas /user:administrator
cmd.exe để mở một cửa sổ Command Prompt thứ hai chạy trong ngữ cảnh của vai trò quản trị
cục bộ và cuối cùng là chạy script từ cửa sổ Command Prompt thứ hai này.
Nhưng nếu muốn chạy script trên một máy và sử dụng nó để thay đổi địa chỉ IP của một máy
khác thì sao? Nói cách khác, chúng ta muốn chạy script từ xa trên một máy Windows XP ở xa thì
phải làm như thế nào?
Cố gắng đầu tiên
Chúng ta hãy bắt đầu bằng việc đăng nhập vào một trạm làm việc admin xp.contoso.com, sử
dụng thông tin thẩm định của một tài khoản admin có tên là Mary Jones. Chúng ta cần thực hiện
điều này vì các admin miền có đặc quyền quản trị cục bộ trên tất cả các máy trong miền. Do đó,
khi chạy script từ trạm admin trên một máy từ xa, script sẽ hoạt động.
Bây giờ chúng ta đã có script ChangeIPAddress.vbs trong thư mục C:\tools ở trạm admin
xp.contoso.com. Mở cửa sổ lệnh Command Prompt trên máy này và gõ vào hai dòng sau:
C:\Documents and Settings\mjones>cd \tools
C:\tools>notepad ChangeIPAddress.vbs
Script được mở trong Notepad, thay đổi dòng bên dưới:
strComputer = "."
thành:
strComputer = "xp2 "
Sau đó vào File/Save để ghi lại thay đổi và đóng Notepad. Bây giờ, chạy script:
C:\tools>ChangeIPAddress.vbs 172.16.11.65
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
C:\tools\ChangeIPAddress.vbs(20, 1) Microsoft VBScript runtime error: The remote server
C:\tools\ChangeIPAddress.vbs(23, 6) SWbemObjectEx: The remote procedure call failed.
C:\tools>
Lại một lỗi khác, và lại phải mất rất lâu thông báo lỗi này mới xuất hiện. Nhưng ít nhất thì đó là
một lỗi khác và được ghi nhận là ở dòng 23:
errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)
Bây giờ, gõ lệnh ipconfig ở cửa sổ Command Prompt trên máy từ xa, ta có kết quả sau:
C:\locatest>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 172.16.11.65
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.11.1
C:\locatest>
Có vẻ như script đã hoạt động! Nhưng vẫn để lại hai vấn đề:
1. Chúng ta không muốn tắt chức năng của Windows Firewall trên các máy từ xa khi chạy
script này trên chúng. Vậy, liệu có cần phải thiết lập một ngoại lệ để các máy này cho
phép chạy script từ xa trong khi vẫn mở Windows Firewall.
2. Còn về lỗi RPC ở trên? Script hoạt động nhưng vẫn trả ra một lỗi. Tại sao lại như vậy?
Ngoại lệ cho scripting từ xa
Mở lại Windows Firewall trên máy từ xa, script sẽ không chạy được. Bây giờ, từ cửa sổ
Command Prompt mức admin trên máy, gõ lệnh gpedit.msc để mở Local Group Policy và đặt
thiết lập chính sách sau (xem Hình 1):
Computer Configuration\Administrative Templates\Network\Network Connections\Domain
Profile\Windows Firewall: Allow remote administration exception