Tài liệu Quản lý các mạng Windows dùng script - Phần 7: Xử lý sự cố lỗi - Pdf 97

Quản lý các mạng Windows dùng script - Phần 7: Xử lý sự cố lỗi Trong bài viết trước chúng ta đã dùng đến kịch bản
ChangeIPAddress.vbs được phát triển trước đó và đã sử dụng nó để thay
đổi địa chỉ IP trên máy tính từ xa. Đây là những gì mà chúng ta đã thay
đổi kịch bản:
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 = "xp2"
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")

đối với các vấn đề nảy sinh khi không có những giải pháp đúng cho chúng.

Vì vậy làm thế nào chúng ta có thể bỏ qua lỗi? Hãy thêm dòng dưới đây vào
gần vị trí bắt đầu của phần đầu (header):
On Error Resume Next
Hay nói cách khác, phần đầu (header) của chúng ta sẽ như sau:
Option Explicit
On Error Resume Next
Dim objWMIService

Bây giờ chúng ta không xem lỗi, và kịch bản của chúng ta làm việc. Tuy
nhiên nó vẫn cần đến nhiều thời gian để thực thi, thực tế có thể cần đến vài
phút. Vậy cái gì sẽ tiếp diễn?

Xử lý sự cố thông báo lỗi

Các thông báo lỗi đôi khi khá khó hiểu và điều này là một trong những vấn
đề đáng quan tâm. Đây là một thông báo lỗi:
SWbemObjectEx: The remote procedure call failed.
Và đây là dòng mã tạo ra nó:
errEnableStatic =
objNetAdapter.EnableStatic(arrIPAddress,
arrSubnetMask)
Dòng mã này làm việc (ví dụ địa chỉ IP bị thay đổi trên máy tính mục tiêu)
nhưng sau đó nó đưa ra một thông báo lỗi. Tại sao lại như vậy? Chúng ta
hãy bắt đầu bằng cách tìm hiểu SwebObjectEx có ý nghĩa gì. Tìm kiếm
nhanh trong MSDN có thể cho thấy (http://msdn2.microsoft.com/en-
us/library/aa393259.aspx):
Extends the functionality of SWbemObject. This object adds the Refresh
method for SWbemRefresher objects.

mạng của máy tính mục tiêu đang ở trạng thái không xác rõ ràng thì kết nối
RPC giữa hai máy tính là rất tồi trước khi kịch bản này kết thúc. Chính vì
vậy sẽ xuất hiện lỗi ở đây.

Chí ít đó cũng là câu trả lời tốt nhất mà chúng tôi có được cho vấn đề này,
và chúng tôi vẫn tiếp tục nghiên cứu tỉ mỉ. Tuy nhiên hãy xem nếu chúng ta
có thể xác nhận vì một lý do nào đó mà vấn đề này được giải quyết, ví dụ lỗi
đó chỉ liên quan với phương pháp EnableStatic của
Win32_NetworkAdapterConfiguration. Việc gì sẽ xảy ra nếu chúng ta cố
gắng viết một kịch bản khác để thực hiện một việc gì đó khác với adapter
mạng trên máy tính mục tiêu thay vì thay đổi địa chỉ IP của nó? Ví dụ, làm
cách nào để thay đổi được cổng mặc định thay vì địa chỉ IP trên máy tính
mục tiêu? Nếu điều đó được thực hiện thì ít nhất chúng ta cũng có thể kết
nối thành công từ máy trạm quản trị đến máy tính từ xa và gọi phương pháp
WMI để thay đổi thiết lập mạng trên nó.

Thay đổi cổng mặc định

Ở phần này chung tôi khuyên bạn nên quay lại đọc một chút phần 4 của loạt
bài này, ở đó chúng tôi đã giới thiệu cho bạn cách sử dụng MSDN để học
cách sử dụng các thuộc tính và phương pháp của
Win32_NetworkAdapterConfiguration. Chúng tôi cho rằng bằng cách làm
như vậy bạn có thể tự viết một kịch bản như vậy. Hãy thử nó!

TẠM NGƯNG

Khi bạn đã cố gắng viết kịch bản cho riêng mình, đôi khi nó có thể làm việc,
đôi khi không làm việc. Nếu nó không làm việc, hãy thực hiện các bước
dưới đây:


của chúng ta có trong phần 2 và thay đổi nó một chút cho tới khi chúng ta có
được một kịch bản mới như dưới đây:
'=========================
' NAME: ChangeGateway.vbs
'
'AUTHOR: Mitch Tulloch
'DATE: February 2007
'
'ARGUMENTS:
'1. gateway_address
'2. metric
'=========================-
Option Explicit
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim strGateway
Dim arrGateway
Dim intMetric
Dim arrMetric
Dim colNetAdapters
Dim errGateway
'Check for missing arguments
If WScript.Arguments.Count = 0 Then
Wscript.Echo "Usage: ChangeGateway.vbs
gateway_address metric"
WScript.Quit
End If
strComputer = "xp2"
strGateway = Wscript.Arguments.Item(0)

IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Intel
21140-Based PCI Fast Ethernet
Adapter (Generic)
Physical Address. . . . . . . . . : 00-03-
FF-21-88-8C
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . :
172.16.11.80
Subnet Mask . . . . . . . . . . . :
255.255.255.0
Default Gateway . . . . . . . . . :
172.16.11.1
C:\>
Bây giờ trên máy trạm quản trị XP, bạn mở cửa sổ lệnh và chạy kịch bản
mới này như dưới đây:
C:\tools>ChangeGateway.vbs 172.16.11.2 5
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All
rights reserved.
Adapter's gateway has been successfully changed to
172.16.11.2
C:\tools>
Kịch bản này cần đến khoảng 5 giây để kết thúc, không có lỗi nào xuất hiện
(Lưu ý rằng ở đây chúng tôi đã bỏ qua On Error Resume Next từ header của
kịch bản đã đưa ra vì chúng tôi muốn quan sát bất kỳ lỗi nào nếu chúng xuất
hiện)

ipconfig không hiển thị thông tin này nhưng chúng ta có thể sử dụng netsh
để có được điều này như dưới đây:
C:\>netsh interface ip show address
Configuration for interface "Local Area Connection"
DHCP enabled: No
IP Address:
172.16.11.80
SubnetMask:
255.255.255.0
Default Gateway:
172.16.11.2
GatewayMetric: 5
InterfaceMetric: 0
C:\>
Đây chính là kết quả cần thấy!


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status