Danh mục

Quản lý các mạng Windows dùng script - Phần 7: Xử lý sự cố lỗi

Số trang: 14      Loại file: pdf      Dung lượng: 400.09 KB      Lượt xem: 8      Lượt tải: 0    
Jamona

Hỗ trợ phí lưu trữ khi tải xuống: 5,000 VND Tải xuống file đầy đủ (14 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Quản lý các mạng Windows dùng script - Phần 7: Xử lý sự cố lỗiTrong 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 =...
Nội dung trích xuất từ tài liệu:
Quản lý các mạng Windows dùng script - Phần 7: Xử lý sự cố lỗi Quản lý các mạng Windows dùng script - Phần 7: Xử lý sự cố lỗiTrong bài viết trước chúng ta đã dùng đến kịch bảnChangeIPAddress.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 ExplicitDim objWMIServiceDim objNetAdapterDim strComputerDim strAddressDim arrIPAddressDim arrSubnetMaskDim colNetAdaptersDim errEnableStaticIf WScript.Arguments.Count = 0 Then Wscript.Echo Usage: ChangeIPAddress.vbsnew_IP_address WScript.QuitEnd IfstrComputer = xp2strAddress = Wscript.Arguments.Item(0)arrIPAddress = Array(strAddress)arrSubnetMask = Array(255.255.255.0)Set objWMIService = GetObject(winmgmts:\ & strComputer & ootcimv2)Set colNetAdapters =objWMIService.ExecQuery(Select * fromWin32_NetworkAdapterConfiguration whereIPEnabled=TRUE)For Each objNetAdapter in colNetAdapters errEnableStatic =objNetAdapter.EnableStatic(arrIPAddress,arrSubnetMask)NextDòng:strComputer = xp2cho chúng ta biết rằng máy tính được tích hợp bởi kịch bản có tên XP2. Máytính điều khiển xa XP2 ban đầu có địa chỉ IP là 172.16.11.43.Bây giờ khi chúng ta chạy kịch bản này bằng cách đánhChangeIPAddress.vbs 172.16.11.65 từ một máy trạm quản lý có tên là XP,những thứ xảy ra được đưa ra dưới đây:1. Kịch bản đã hoạt động. Ví dụ địa chỉ của XP2 đã thay đổi từ 172.16.11.43thành 172.16.11.65.2. Kịch bản cần đến nhiều thời gian để thực thi3. Kịch bản trả lại lỗi dưới đây: C: oolsChangeIPAddress.vbs(23, 6)SWbemObjectEx: The remote procedure call failed.Làm thế nào chúng ta có thể giải quyết được các kết quả đó?Giải pháp dễ dàngMột thứ chúng ta có thể thực hiện là nói rằng “Hãy bỏ qua lỗi”. Đó là nhữnggì được nói với phương pháp này. Sau tất cả, bất kỳ quản trị viên trong thếgiới thực nào cũng biết rằng CNTT không phải là một khoa học đúng về mọichi tiết và chúng thường kết thúc bằng việc áp dụng “cách giải quyết khác”đố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àogần vị trí bắt đầu của phần đầu (header):On Error Resume NextHay nói cách khác, phần đầu (header) của chúng ta sẽ như sau:Option ExplicitOn Error Resume NextDim 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. Tuynhiên nó vẫn cần đến nhiều thời gian để thực thi, thực tế có thể cần đến vàiphút. Vậy cái gì sẽ tiếp diễn?Xử lý sự cố thông báo lỗiCá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 tahãy bắt đầu bằng cách tìm hiểu SwebObjectEx có ý nghĩa gì. Tìm kiếmnhanh 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 Refreshmethod for SWbemRefresher objects.(Mở rộng chức năng của SWbemObject. Đối tượng này bổ sung phươngpháp Refresh cho các đối tượng SwbemRefresher)Vì vậy SwbemObjectEx cơ bản chỉ bổ sung thêm chức năng choSWbemObject. Vậy SwbemObject là gì?Contains and manipulates a single WMI object class or instance.(Gồm một đối tượng WMI hoặc một sự kiện)Điều đó có nghĩa gì? Trang này cho chúng ta nhiều thông tin nhưng nókhông thích hợp. Mặc dù vậy trong các trường hợp, SwbemObject(SWbemObjectEx) là tất cả những gì bạn quản lý hay truy vấn trong WMI.Trong kịch bản của chúng ta, chúng ta đang truy vấn lớpWin32_NetworkAdapterConfiguration và trả về một bộ sưu tập các đốitượng gọi là colNetAdapter thể hiện các adapter mạng trên máy tính. Vì vậySWbemObjectEx (hoặc SWbemObject) đã đề cập đến trong thông báo lỗinày làm đơn giản hóa đối tượng đang thể hiện bản thân adapter mạng, ví dụnhư objNetAdapter. Vậy tại sao objNetAdapter tạo ra lỗi.Dẫu sao đây cũng dường như trở thành vấn đề. Theo một trong nhữngchuyên gia có uy tín, có thể một thành phần nào đó có trong hotfix choWindows XP bị thay đổi cách mà lệnh gọi trả về được tạo và được đệ trìnhkhi câu lệnh gây ra lỗi được thực thi. Thông thường nếu gọi phương phápEnableStatic của một đối tượng được thuyết minh bằng một ví dụ của lớpWin32_NetworkAdapterConfiguration hoàn toàn thành công nó sẽ trả về 0,có nghĩa là không có lỗi. Còn nếu nó trả về 1 thì điều đó có nghĩa cần phảikhởi động lại. Rõ ràng với Windows XP sẽ không cần phải khởi động lại khibạn thay đổi địa chỉ IP trên adapter mạng. Nếu với một vài lý do, một hotfixcó thể thay đổi gì đó trong WMI hoặc thành phần khác để Windows khôngkhởi động lại trước khi địa chỉ mới được thay thế t ...

Tài liệu được xem nhiều: