Tham khảo tài liệu ''quản lý các mạng windows dùng script'', công nghệ thông tin, quản trị mạng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Quản lý mạng Windows dùng Script - Phần 1: Những khái niệm Nguồn : quantrimang.com Mitch Tulloch Đây phần loạt mạng Windows scripting Phần đề cập đến khái niệm kỹ thuật scripting (kỹ thuật viết kịch bản) mạng chạy hệ điều hành Windows Những phần lại loạt chuyển đến bạn nội dung chi tiết nhiều khía cạnh khác chủ đề Có câu nói này, không rõ vĩ nhân hay thường dân tơi thấy chí lý: “Đưa cho anh chàng chết đói cá, bạn nuôi ngày; dạy cho cách câu cá, bạn nuôi đời” Cịn thế, giới bận rộn chuyên gia công nghệ thông tin (mà quen miệng gọi dân IT) làm việc với kỹ thuật scripting: “Đưa cho admin script, bạn giúp giải vấn đề; dạy cách viết script nào, bạn giúp làm công việc gắn liền với đời anh ta” Giá mà tự động hố cơng việc quản trị hàng ngày script, sống admin thoải mái nhẹ nhàng nhiều Tại cần phải biết dùng script? Không phải có hàng trăm script viết sẵn trơi giới mạng mà bạn tải dùng cách dễ dàng, lấy từ nguồn trung tâm Script Center Script Repository Microsoft chẳng hạn Vậy sao? Hàng trăm kịch (script) viết sẵn, xin thưa Tải dùng dễ dàng, xin thưa lại Ấy mà chưa đủ Chúng hữu ích giúp đỡ bạn nhiều, nhiều địi hỏi riêng theo cấu hình cụ thể mơi trường bạn lại làm khó chúng Có hàng trăm hàng nghìn script tải bạn chọn lọc script phù hợp mà phải điều chỉnh đơi chút Đơn giản tác giả viết khơng nằm tổ chức bạn, khơng thực theo cấu hình bạn mối quan tâm họ lại hướng đến khác Khi admin phải trở thành ông thợ sửa chữa lành nghề, thay đổi chỗ chút, thay đổi chỗ tý, ghép ghép nối nối để biến vài scrip nhỏ lẻ thành script hợp lớn hay dùng liệu đầu script làm thành liệu đầu vào cho script khác, hay biến thành cơng cụ hoạt động cho máy từ xa… Quả nhiều việc! Anh thợ máy muốn sửa chữa máy móc phải hiểu cấu trúc nó, điều không phản bác Bởi mà anh “thợ” admin muốn biến đổi, điều chỉnh Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com script phải hiểu nó, phải biết cách xây dựng viết nó, biến hay có sẵn thành riêng mình, phù hợp với Và lúc người ta gọi anh “thợ lành nghề” Muốn vậy, phải bắt đầu với điều nhất, Windows scripting Nói đến script, nhiều người tưởng chừng khó, thực khó trước hết… script khó dịch sang tiếng Việt! Script nghĩa “kịch bản”, dân công nghệ đâu phải người làm phim nên kịch giới IT toàn đoạn mã loằng ngoằng mà có chun gia hiểu, cịn nhiều người “thường thường bậc trung” như… sinh viên công nghệ chịu! Chính mà hơm nhất, sau nâng cao dần khả hiểu khía cạnh sâu xa viết dùng script mạng Windows Mục đích cuối mà hướng tới kể người bắt đầu tìm hiểu bạn, tơi script hố tự động cơng việc, để sống admin an nhàn Chúng ta thực điều script bạn viết download từ nhiều nguồn khác Chúng ta biết số tài nguyên liên quan đáng tìm hiểu để có nhìn sâu sắc Windows scripting, số công cụ trợ giúp hữu ích tương lai Các thiết lập TCP/IP scripting Hầu admin dùng Visual Basic Script (VBScript) để viết kịch quản trị Windows (Windows admin script) VBScript không ngôn ngữ mạnh mà cú pháp cịn đơn giản để học làm VBScript dùng chung với Windows Management Instrumentation (WMI) Active Directory Services Interfaces (ADSI) để viết kịch cho khía cạnh hệ thống chạy hệ điều hành Windows hay mạng dùng Active Directory Chúng ta bắt đầu học Windows scripting cách dùng VBScript với WMI để thực điều hữu ích: thay đổi địa IP network adapter Tại lại cần thực điều này? Đó phải sử dụng nhiều đến máy chủ ảo PC ảo để thiết lập môi trường kiểm tra Chúng ta cần phải chuyển máy ảo (VM) chạy hệ điều hành Windows Server 2003 từ mạng ảo sang mạng ảo khác để sử dụng lại server (máy chủ) cho số mục đích khác Như có nghĩa cần thay đổi địa IP server (cũng cổng vào mặc định nữa) Bạn thực điều cách mở Network Connections Control Panel kích phải chuột lên Local Area Connections, chọn Properties > Internet Protocol (TCP/IP) tab General bấm chọn Properties, nhập địa IP ấn OK hai lần Đây cách thực phổ biến nghe qua bạn thấy dài dòng mệt mỏi Với chuyên gia, họ thích sử dụng Command Promt hơn, lệnh dùng Netsh Song, sử dụng lệnh bạn cần cẩn trọng có nhiều ngữ cảnh, lệnh tham số khác khó nhớ Thực sai thao tác dẫn đến Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com hậu nghiêm trọng Nếu chưa thực chắn, nhờ giúp đỡ phần trợ giúp Help quay trở lại cách thứ Nhưng mục đích học script Do đó, xem xét cách thay đổi địa IP máy dùng VBScript WMI mà trước hết phải biết đến số khái niệm đối tượng (object), phương thức (method), thuộc tính (property), namespace… Để bắt đầu, chạy script máy cục bộ: strComputer = "." Ở đây, tiền tố str- đặt đầu đối tượng để strComputer biến có chứa xâu, dấu chấm ký hiệu tham chiếu tới máy cục dùng điểm bắt đầu namespace WMI Vậy không gian tên WMI gì? Thực ra, tập hợp phân cấp lớp đối tượng khác nhau, dùng để quản lý nhiều mặt khác máy tính Windows Ví dụ, có namespace gốc bên hàng tá namespace khác SECURITY, CIMV2, perfmon… Hầu hết lớp WMI hữu ích nằm không gian tên root\cimv2 trước làm việc với lớp số đó, cần diễn giải chúng thành đối tượng Sau xem xét thuộc tính đối tượng gọi phương thức để thao tác chúng Lớp, đối tượng, thuộc tính, phương thức - chúng gì? Dưới phân tích đơn giản giúp bạn hiểu chúng: xem xét lớp MicrowaveOven, tức tập hợp trừu tượng tất lò vi sóng (khơng có lị thực đưa vào cả) Lớp có thuộc tính: màu sắc (Color), kích thước theo khối lập phương (CubicInches), mặt quay trịn (HasTurntable)… Có lẽ bạn hiểu thuộc tính đặc điểm, tính chất đặc trưng cho lớp Nói cách khác, lị vi sóng có màu đó, có kích thước bên chúng quay trịn khơng Lớp MicrowaveOven có phương thức Phương thức, tức hàm tính tốn định nghĩa theo quy luật định để lớp thao tác bạn thao tác với lớp Với lớp cụ thể này, số phương thức dùng SetCookingTime (thiết lập thời gian nấu), SetPowerLevel (thiết lập mức điện sử dụng), Reset (nấu lại)… Thông thường, để gọi phương thức bạn phải đưa tham số vào cho Ví dụ, để gọi phương thức SetCookingTime (thiết lập thời gian nấu), định nghĩa biến CookingTime (thời gian nấu) số giây định sau đưa biến vào phương thức SetCookingTime thiết lập cho trường hợp cụ thể lớp (một trường hợp thực, khơng phải lị vi sóng lớp trừu tượng) Với WMI VBScript, thực 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 chưa tạo nó, tạo cách dùng lệnh Set phương thức CreateObject: Set objMicrowave = CreateObject("MicrowaveOven") Thực ra, xét kỹ objMicrowave khơng phải đối tượng lớp MicrowaveOven Chính xác đối tượng tham chiếu tới thể lớp MicrowaveOven Nhưng bắt đầu với nên khía cạnh sâu tìm hiểu sau Tiếp theo, tạo thêm biến strColor để thiết lập thuộc tính màu sắc cho lị vi sóng Đặt giá trị biến Green (màu xanh cây), script có dạng bên (với số thích bên cạnh): strColor = "Green" 'gán màu cho lị vi sóng intCookingTime = 120 'quy định thời gian nấu (tính theo giây) Set objMicrowave = CreateObject("MicrowaveOven") 'tạo thể đối tượng errSetCookingTime = objMicrowave.SetCookingTime(intCookingTime) 'gọi phương thức để ‘thiết lập thời gian nấu ghi lại đoạn mã lỗi kết objMicrowave.Color = strColor 'thiết lập giá trị thuộc tính Color (màu sắc) Cũng khơng q khó phải khơng bạn! Trở lại với script Muốn truy cập thiết lập cấu hình TCP/IP máy dùng WMI, bạn cần viết mã: Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Lệnh kết nối bạn tới namespace root\cimv2 máy cục cách Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com định nghĩa đối tượng có tên objWMIService thiết lập với giá trị trả phương thức GetObject Sau kết nối tới namespace này, bạn thu thập thông tin bên dưới: Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") Dòng lệnh chạy nào? Đầu tiên, bạn thấy đối tượng có tên objWMIService mà vừa mơ tả phút trước dòng bên Sau đối tượng ExecQuery, thuộc tính mà phương thức (cấu trúc lệnh ln ln doituong.thuoctinh doituong.phuongthuc) Chúng ta dễ dàng đốn phương thức đằng sau câu truy vấn Phương thức ExecQuery gọi cách thêm tham số vào Tham số lệnh SQL (SELECT), trả tập hợp (được đánh dấu tiền tố “col-”) tất (dấu hoa thị) cấu hình điều hợp mạng máy có đường bao TCP/IP cho phép điều hợp Tập hợp trả sau thực phương thức gán với biến colNetAdapters Chúng ta làm với tập hợp này? Khi có tập hợp tay, bạn phải lặp vịng nó, dùng lệnh lặp For Each Vòng lặp này: For Each objNetAdapter in colNetAdapters ' something to each network adapter's configuration Next Bạn ln phải lặp vịng tập hợp cho dù tập hợp có đối tượng Bây giờ, điều thực muốn thay đổi địa IP cho adapter Vì thế, định nghĩa thêm số biến: arrIPAddress = Array("172.16.11.99") arrSubnetMask = Array("255.255.255.0") Chú ý biến định nghĩa địa IP subnet mask phải biến mảng Tại lại thế? Lý máy tính Windows nhiều khơng phải có địa IP, cổng vào mặc định… Vậy khơng dùng biến mảng cho tất thiết lập IP quán Và lý thứ hai, tìm kiếm lớp Win32_NetworkAdapterConfiguration WMI Reference MSDN, bạn thấy phải dùng đến biến mảng Chúng ta nghiên cứu sâu WMI Reference tương lai, tạm thời chấp nhận Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com mức độ chưa rõ ràng chút Cuối cùng, cần gọi phương thức EnableStatic lớp Win32_NetworkAdapterConfiguration để thay đổi địa IP cổng vào mặc định điều hợp mạng sang thiết lập định nghĩa biến mảng Thực sau: errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask) Ở đây, biến err- cần thiết, giống nơi lưu trữ đoạn mã lỗi trả phương thức chạy Mang tất lại với Bây giờ, ghép tất phần lại với xem có gì: strComputer = "." arrIPAddress = Array("172.16.11.99") arrSubnetMask = Array("255.255.255.0") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For Each objNetAdapter in colNetAdapters errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask) Next Bạn biết đấy, đoạn mã đưa định nghĩa biến, điều khiển lỗi, dùng liệu đầu vào kiểm chứng kết trả Chúng ta sử dụng lại đoạn mã phần sau loạt bài, xem liệu có làm việc hay khơng Ghi script lại với tên ChangeIPAddress.vbs (nhớ phải tắt Word Wrap Notepad) copy lên desktop máy chủ có địa tĩnh 172.16.11.45 Sau đó, mở cửa sổ dịng lệnh Command Promp với vai trò người dùng Administrator, chuyển tới thư mục Desktop chạy script, dùng Cscript.exe Kết trả về: C:\Documents and Settings\Administrator\Desktop>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Connection-specific IP Address Subnet Mask Default Gateway DNS Suffix : : 172.16.11.45 : 255.255.255.0 : 172.16.11.1 C:\Documents and Settings\Administrator.DC1\Desktop>cscript ChangeIPAddress.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved C:\Documents and Settings\Administrator\Desktop>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific IP Address Subnet Mask Default Gateway DNS Suffix : : 172.16.11.99 : 255.255.255.0 : 172.16.11.1 Vâng, làm việc! Địa IP máy thay đổi thành công từ 45 thành 99 hiển thị lệnh Ipconfig thứ hai Còn nhiều điều thú vị Windows scripting, xin hẹn bạn phần hai Và xin tạm biệt! Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Quản lý mạng Windows dùng script - Phần 2: Hoàn chỉnh script Nguồn : quantrimang.com Mitch Tulloch Ở phần trước biết đến số khái niệm kỹ thuật scripting đối tượng (object), phương thức (method), thuộc tính (property) viết scritp đơn giản thay đổi địa IP gán cho điều hợp mạng Sau đó, sử dụng bốn script đầu tiên, gọi ChangeIPAddress.vbs: strComputer = "." arrIPAddress = Array("172.16.11.99") arrSubnetMask = Array("255.255.255.0") Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration") For Each objNetAdapter in colNetAdapters errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask) Next Khi chạy script server Windows, thay đổi thành công địa IP máy từ 45 sang 99 (Kiểm tra lệnh ipconfig trước sau chạy script) Kết hoàn toàn tốt Nhưng script xây dựng lại mức đơn giản Còn thiếu nhiều yếu tố quan trọng khác định nghĩa biến, điều khiển lỗi, dùng liệu đầu vào xác nhận liệu đầu cần phải bổ sung vào để có script tương đối hoàn chỉnh Chúng ta thực điều phần hai Các định nghĩa biến Việc cần làm để xếp gọn gàng script định nghĩa biến dùng VBScript cho phép định nghĩa ngầm biến đơn giản cách dùng câu lệnh, tốt bạn khai báo tường minh chúng bắt đầu script Khai báo biến nói cho VBScript biết tồn để cấp phát nhớ lưu trữ Vì khai báo biến tường minh lại hay hơn? Ví dụ script dài, bạn thường phạm phải hay số lỗi gõ phím nhầm Và gõ nhầm tên biến, script bạn không chạy Nếu khai báo biến tường đầu script biến khai Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com báo ngầm sau script (có thể nguyên nhân gây lỗi gõ nhầm) tạo lỗi runtime Các thông báo lỗi giúp bạn xác định vị trí nhầm lẫn gỡ lỗi cho script bạn Để VBScript biết bạn khai báo tường minh tất biến script, thêm lệnh sau vào đầu script: Option Explicit Nếu thêm lệnh vào đầu script ChangeIPAddress.vbs chạy từ Command Prompt, kết là: C:\Documents and Settings\Administrator.DC1\Desktop>ChangeIPAddress.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved C:\Documents and Settings\Administrator.DC1\Desktop\ChangeIPAddress.vbs(2, 1) Microsoft VBScript runtime error: Variable is undefined: 'strComputer' Điều mà VBScript (hay chế script đăng ký Windows Script Host để chạy script VBScript) muốn nói có lỗi dịng script: strComputer = "." Vì lại xuất lỗi này? Đó gán giá trị cho biến xâu (strComputer) chưa khai báo Vì thế, cần thêm khai báo cho biến dùng script: Option Explicit Dim objWMIService Dim objNetAdapter Dim strComputer Dim arrIPAddress Dim arrSubnetMask Dim colNetAdapters Dim errEnableStatic strComputer = "." arrIPAddress = Array("172.16.11.93") arrSubnetMask = Array("255.255.255.0") Set objWMIService = GetObject("winmgmts:\\" & strComputer & Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") For Each objNetAdapter in colNetAdapters errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask) Next Chú ý dùng Option Explicit (tuỳ chọn khai báo tường minh), bạn phải khai báo tất biến script mình, gồm đối tượng, xâu, mảng, tập hợp, biến cho đoạn mã lỗi… Nghe rắc rối phức tạp thực tế cần chạy số trang dài, chạy chương trình gỡ lỗi rungning time, bạn biết hữu ích Cũng ý không cần khai báo biến theo trình tự, cần nhớ khai báo cho biến trước dùng Thông thường người ta đặt tất khai báo biến vào phần riêng đầu script làm Điều khiển lỗi Bây giờ, loại bỏ lỗi gõ nhầm chạy script soát lại, script hoạt động Nhưng khơng hoạt động sao? Ví dụ, chuyện xảy thay đổi script chút để chạy máy từ xa thay máy cục mà máy từ xa khơng nằm mạng? Một lần lỗi thời gian chạy (tức lỗi xảy script thực thi, ngược lại với lỗi cú pháp mà VBScript nhận biên dịch script trước chạy nó) xuất script bị ngừng lại, hiển thị thông báo lỗi tương tự thông báo thấy Chuyện xảy viết script để thực số thao tác? Trong trường hợp tất nhiên khơng muốn có lỗi thời gian chạy khiến script phải dừng lại chừng mà script phải thực tất thao tác khác xây dựng Một ví dụ điển hình script giám sát thiết lập số máy tính mà khơng thay đổi thiết lập Trong trường hợp bạn cần xây dựng script chạy liên tục cho dù hay số máy bị hư hỏng không chạy Cách đơn giản để kiểm soát lỗi thời gian chạy lờ chúng chúng xuất Bạn nói với VBScript thực điều cách thêm lệnh sau vào gần nơi bắt đầu script, chẳng hạn sau Option Explicit: On Error Resume Next Tất nhiên, bạn muốn thực thêm nhiều thứ khác kiểm sốt lỗi Ví dụ kiểm tra tồn điều kiện lỗi thời gian chạy số điểm script (như sau kết nối tới dịch vụ WMI máy từ Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com khác sử dụng Windows Management Instrumentation Command-line (WMIC) xem WMIC cơng cụ (một trình thơng dịch lệnh) cho phép truy vấn thơng tin WMI trực tiếp từ dịng lệnh thay phải thực bên kịch WMIC sử dụng theo hai cách: tương tác (đưa lệnh thời điểm cửa sổ lệnh) file Sử dụng WMIC tương tác Ví dụ, cho nhóm quản trị cục đính kèm tài khoản người dùng cục không đặt lại tên hệ thống Nếu trường hợp bạn sử dụng WMIC tương tác để hiển thị danh sách thành viên nhóm quản trị cục cách mở cửa sổ lệnh đánh vào lệnh sau: C:\Documents and Settings\myself>wmic path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domai n=\"%computername%\"") GroupComponent??????????????????? ????????PartComponent win32_group.domain="XP191",name="administrators"? \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" Administrator" win32_group.domain="XP191",name="administrators"? \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" sjones"???? win32_group.domain="XP191",name="administrators"? \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" gsmith"??????? win32_group.domain="XP191",name="administrators"? \\XP191\root\cimv2:Win32_Group.Domain="TEST",Name="Domain Admins" Xem cột thứ hai, thấy nhóm quản trị cục máy tính có tài khoản người dùng với nó: quản trị viên, sjones gsmith Thêm vào đó, nhóm quản trị miền tồn cục thành viên nhóm quản trị cục hệ thống Bây nhóm quản trị cục đính kèm hệ thống đổi tên thành gì? Chạy lệnh bạn có kết đây: C:\Documents and Settings\myself>wmic path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com =\"%computername%\"") No Instance(s) Available Tại lệnh bị hỏng? Rõ ràng tên nhóm tồn truy vấn mã cứng lệnh Nhưng nhóm quản trị cục đính kèm đặt lại tên bạn xác định tên nào? Câu trả lời đơn giản nhóm đặt tên giống nhóm cũ bề ngồi Hay theo cách khác, nhận dạnh bảo mật (SID) không thay đổi S-1-5-32544 (bạn xem thêm để có thêm danh sách SID) Vậy xác định tên nhóm biết SID nó? Chúng ta sử dụng lại WMIC lần nữa, giống đây: C:\Documents and Settings\myself>wmic group where (sid = "S-1-5-32-544" and localaccount = true) get name Name JustAnotherGroup Vậy nhóm quản trị đính kèm hệ thống đặt lại tên thành JustAnotherGroup! Dù biết tên nhóm này, sử dụng WMIC để truy vấn thành viên nó: C:\Documents and Settings\myself>wmic path win32_groupuser where (groupcomponent="win32_group.name=\"justanothergroup\",dom ain=\"%computername%\"") GroupComponent PartComponent win32_group.domain="XP191",name="justanothergroup" \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" JustAnotherUser" win32_group.domain="XP191",name="justanothergroup" \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" sjones" win32_group.domain="XP191",name="justanothergroup" \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" gsmith" win32_group.domain="XP191",name="justanothergroup" \\XP191\root\cimv2:Win32_Group.Domain="TEST",Name="Domain Admins" Và xem từ đầu lệnh có quản trị cục máy tính này: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com sjones, gsmith JustAnotherUser Rõ ràng nhóm tồn cục quản trị miền thành viên JustAnotherGroup Sử dụng WMIC file Batch Ngược lại không muốn đăng nhập vào máy trạm chạy lệnh WMIC trên, phải làm nào? WMIC chạy máy tính điều khiển xa cách sử dụng khóa chuyển đổi /node:””, khóa cung cấp để bạn kích hoạt Remote Administration máy tính mục tiêu (bạn thực cách sử dụng Group Policy giải thích phần 6) Vậy thừa nhận bạn thực điều đó, mở cửa sổ lệnh máy chủ trung tâm (bộ điều khiển miền) đưa hai lệnh tương tự WMIC, lúc máy trạm điều khiển xa có tên XP191 Đầu tiên lấy tên nhóm quản trị cục đính kèm máy tính điều khiển xa C:\Documents and Settings\Administrator>wmic /node:"xp191" group where (sid = "S-1-5-32-544" and localaccount = true) get name Name JustAnotherGroup Bây sử dụng kết để lấy danh sách thành viên nhóm: C:\Documents and Settings\Administrator>wmic /node:"xp191" path win32_groupuser where (groupcomponent = "win32_group.name=\"justanothergroup\",domain=\"xp191\"") GroupComponent?????????????????????????????PartComponent win32_group.domain="xp191",name="justanothergroup"? \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" JustAnotherAccount" win32_group.domain="xp191",name="justanothergroup"? \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" sjones" win32_group.domain="xp191",name="justanothergroup"? \\XP191\root\cimv2:Win32_UserAccount.Domain="XP191",Name=" gsmith" win32_group.domain="xp191",name="justanothergroup"? \\XP191\root\cimv2:Win32_Group.Domain="TEST",Name="Domain Admins" Kết giốnh mong đợi Từ điểm này, bạn hoàn toàn dễ Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com dàng viết file đơn giản để truy vấn tất máy trạm mạng lưu kết file văn để phân tích sau Kết luận WMIC thực có nhiều thú vị, nhiên đơi khó hiểu Chúng ta nghiên cứu sử dụng phần Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Quản lý mạng Windows Script - Phần 13: Kịch trả tất giá trị Nguồn : quantrimang.com Trong phần trước loạt đến với kịch có tên gọi DisplayClassProperties.vbs, kịch hiển thị tên thuộc tính lớp WMI Đây nội dung kịch bản, sử dụng Win32_BootConfiguration lớp, kết nối vào biệt danh WMI: Option Explicit On Error Resume Next Dim strComputer Dim strWMINamespace Dim strWMIQuery Dim objWMIService Dim colItems Dim objItem strComputer = "." strWMINamespace = "\root\CIMV2" strWMIQuery = ":Win32_BootConfiguration" Set objWMIService = GetObject("winmgmts:\\" & strComputer & strWMINamespace & strWMIQuery) WScript.Echo "Number of properties of " & strWMIQuery & " class is " & objWMIService.Properties_.count For Each objItem in objWMIService.Properties_ Wscript.Echo "Property: " & objItem.name Next Khi chạy kịch (sử dụng thông tin quản trị cục bộ) máy tính Windows XP (với Cscript.exe cấu hình từ trước kịch Windows mặc định), kết cho sau: C:\scripts>DisplayClassProperties.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Number of Property: Property: Property: Property: Property: Property: Property: Property: Property: properties of :Win32_BootConfiguration class is BootDirectory Caption ConfigurationPath Description LastDrive Name ScratchDirectory SettingID TempDirectory Như đề cập đến phần cuối, kịch dễ dàng tùy chỉnh để hiển thị tên thuộc tính lớp WMI Ví dụ, muốn hiển thị tất tên thuộc tính lớp Win32_DiskPartition, cần thay đổi dòng: strWMIQuery = ":Win32_BootConfiguration" thành: strWMIQuery = ":Win32_DiskPartition" Khi chạy lại kịch kết thu là: C:\scripts>DisplayClassProperties.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved Number of properties of :Win32_DiskPartition class is 34 Property: Access Property: Availability Property: BlockSize Property: Bootable Property: BootPartition Property: Caption Property: ConfigManagerErrorCode Property: ConfigManagerUserConfig Property: CreationClassName Property: Description Property: DeviceID Property: DiskIndex Property: ErrorCleared Property: ErrorDescription Property: ErrorMethodology Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: Property: HiddenSectors Index InstallDate LastErrorCode Name NumberOfBlocks PNPDeviceID PowerManagementCapabilities PowerManagementSupported PrimaryPartition Purpose RewritePartition Size StartingOffset Status StatusInfo SystemCreationClassName SystemName Type Hiển thị giá trị thuộc tính Ở quay lại để sử dụng Win32_BootConfiguration lớp, thay đổi để kịch liệt kê không tên tất thuộc tính mà cịn giá trị chúng bạn cần thay đổi dịng: Wscript.Echo "Property: " & objItem.name thành: Wscript.Echo "Property: " & objItem.name & vbTab & "Value: " & objItem.value Kết chạy: C:\scripts>DisplayClassProperties.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved Number of properties of :Win32_BootConfiguration class is Property: BootDirectory Value: Property: Caption Value: Property: ConfigurationPath Value: Property: Description Value: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Property: Property: Property: Property: Property: LastDrive Value: Name Value: ScratchDirectory SettingID Value: TempDirectory Value: Value: Kết giá trị trống Tại lại vậy? Đây tiếp tục, xem dòng này: Set objWMIService = GetObject("winmgmts:\\" & strComputer & strWMINamespace & strWMIQuery) Việc đưa vào giá trị biến ghi lại dịng sau: Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2:Win32_BootConfiguration" ) Lưu ý kết nối đến lớp WMI cụ thể (Win32_BootConfiguration) biệt danh WMI để trả gồm có thuộc tính lớp Sau muốn hiển thị tên giá trị thuộc tính Nhưng giá trị trả NULL (trống rỗng) chưa kết nối với nstance cụ thể lớp WMI Glossary nói instance “một thể giới thực quản lý đối tượng kèm với lớp cụ thể” “các instance gồm có giá trị thực” giá trị thực muốn Vậy kết nối đến instance lớp nào? Để kết nối tới instance lớp, bạn cần phải định instance riêng biệt cách sử dụng key property lớp Chúng ta xem key property thuộc tính cung cấp nhận dạng cần thiết cho instance lớp key property đánh dấu Key qualifier tài liệu MSDN Hãy xem trang MSDN cấu hình lớp Win32_BootConfiguration để biết thêm key property cho lớp Hình hiển thị phần trang này, cho bạn cách phân biệt key property lớp: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Hình 1: Key property cho lớp Win32_BootConfiguring Từ trang MSDN này, thấy key property cho lớp Win32_BootConfiguration Name Điều nghĩa cần phải định giá trị cho thuộc tính chuỗi biệt danh WMI muốn kết nối đến instance cụ thể lớp để lấy giá trị thuộc tính lớp Hay nói cách khác, tất cần phải thực thay đổi dòng: strWMIQuery = ":Win32_BootConfiguration" thành: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com strWMIQuery = ":Win32_BootConfiguration.Name='SOMETHING'" Tại “SOMETHING” giá trị thuộc tính tên instance cụ thể lớp Chúng ta tìm thấy giá trị key property instance cụ thể lớp nào? Có cách sử dụng Windows Management Instrumentation Tester (wbemtest.exe) Bắt đầu đánh wbemtest cửa sổ lệnh để bạn mở cửa sổ đây: Hình 2: Windows Management Instrumentation Tester Kích nút Connect kết nối đến khơng gian tên root\cimv2: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Hình 3: Kết nối đến lớp Win32_BootConfiguration Kích Connect để quay cửa sổ chính, nơi có tất nút hiển thị đây: Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Hình 4: Đã kết nối đến lớp Kích nút Enum Instances đánh tên lớp để hiển thị tất instance lớp: Hình 5: Hiển thị instance lớp Cuối cùng, kích OK để hiển thị tất instance lớp liệt kê key property chúng (Name): Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Hình 6: Các instance Win32_BootConfiguration Sau tất loại lại có instance lớp máy tính thuộc tính Name instance có giá trị "BootConfiguration"! điều có nghĩa để hiển thị giá trị thuộc tính instance lớp Win32_BootConfiguration máy tính tất cần thiết thay đổi dịng này: strWMIQuery = ":Win32_BootConfiguration" thành: strWMIQuery = ":Win32_BootConfiguration.Name='BootConfiguration'" Cách khác, kịch DisplayClassProperties.vbs duyệt lại sau: Option Explicit On Error Resume Next Dim strComputer Dim strWMINamespace Dim strWMIQuery Dim objWMIService Dim colItems Dim objItem strComputer = "." strWMINamespace = "\root\CIMV2" Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com strWMIQuery = ":Win32_BootConfiguration.Name='BootConfiguration'" Set objWMIService = GetObject("winmgmts:\\" & strComputer & strWMINamespace & strWMIQuery) WScript.Echo "Number of properties of " & strWMIQuery & " class is " & objWMIService.Properties_.count For Each objItem in objWMIService.Properties_ Wscript.Echo "Property: " & objItem.name & vbTab & "Value: " & objItem.value Next Khi chạy kịch này, khơng hiển thị tên thuộc tính mà cịn giá trị chúng nữa: C:\scripts>DisplayClassProperties.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001 All rights reserved Number of properties of :Win32_BootConfiguration.Name='BootConfiguration' class is Property: BootDirectory Value: \WINDOWS Property: Caption Value: \Device\Harddisk0\Partition1 Property: ConfigurationPath Value: \WINDOWS Property: Description Value: \Device\Harddisk0\Partition1 Property: LastDrive Value: C: Property: Name Value: BootConfiguration Property: ScratchDirectory Value: C:\WINDOWS\system32\config\systemprofile\Local Settings\Temp Property: SettingID Value: Property: TempDirectory Value: C:\WINDOWS\system32\config\systemprofile\Local Settings\Temp Đặt thông tin vào bảng để dễ đọc hơn: BootDirectory \WINDOWS Caption \Device\Harddisk0\Partition1 ConfigurationPath \WINDOWS Description \Device\Harddisk0\Partition1 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com LastDrive C: Name BootConfiguration ScratchDirectory C:\WINDOWS\system32\config\systemprofile\Local Settings\Temp SettingID Value: TempDirectory C:\WINDOWS\system32\config\systemprofile\Local Settings\Temp Kết luận Chúng ta thấy kịch “trả tất giá trị” đơn giản cho thơng tin hữu dụng máy tính Đây tập mà bạn tự thực hiện: thay kết nối đến instance lớp Win32_BootConfiguration (chỉ có instance lớp này), bạn cố gắng kết nối đến instance lớp Win32_DiskPartition (lớp có vài instance máy tính bạn có nhiều partition) Để thực điều đó, trước tiên bạn cần sử dụng wbemtest để hiển thị instance lớp (tìm hiểu thêm key property khác với instance này) sau thay đổi kịch DisplayClassProperties.vbs để hiển thị thuộc tính giá trị instance cụ thể lớp (nghĩa phân vùng đĩa bạn định) % Hết % ... sắc Windows scripting, số cơng cụ trợ giúp hữu ích tương lai Các thiết lập TCP/IP scripting Hầu admin dùng Visual Basic Script (VBScript) để viết kịch quản trị Windows (Windows admin script) VBScript... vị Windows scripting, xin hẹn bạn phần hai Và xin tạm biệt! Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Quản lý mạng Windows dùng script - Phần 2: Hoàn chỉnh script. .. Quản lý mạng Windows dùng script - Phần 3: Hiểu WMI Nguồn : quantrimang.com Mitch Tulloch Phần giới thiệu với bạn nguyên tắc hoạt động Windows Management Instrumentation (WMI) cách scrip VBScript