Phần 1: Những khái niệm cơ bản
Phần 2: Hoàn chỉnh script
Phần 3: Hiểu về WMI
Phần 4: Sử dụng Win32_NetworkAdapterConfiguration
Mitch Tulloch
Ở phần trước của loạt bài này, chúng ta đã bắt đầu khám phá những điều mới mẻ về lớp Win32_NetworkAdapterConfiguration. Lớp WMI mạnh này có 61 thuộc tính và 41 phương thức, có thể được dùng cho truy vấn và thay đổi thiết lập mạng TCP/IP trên các máy Windows.
Để minh hoạ tính năng mạnh của lớp này, chúng ta đã sử dụng script mẫu phát triển tử phần một và hai, cũng như khai thác thông tin hỗ trợ trên MSDN để thay đổi script ban đầu và thực hiện được một số chức năng khác nhau. Cụ thể là thay đổi địa chỉ IP của một bộ điều hợp mạng và tuỳ biến để tạo ra script mới có thể ngắt NetBIOS qua TCP/IP (NetBT) trên tất cả các bộ điều hợp mạng có giới hạn TCP/IP được phép trên chúng.
Chúng ta sẽ cần khám phá thêm tính năng mạnh mẽ của lớp WMI này trong một số bài sau. Nhưng trước khi thực hiện điều đó, đầu tiên hãy nói về những trở ngại khi học script. Vượt qua mọi trở ngại, khó khăn để biết cách sử dụng script trong hoạt động quản trị mạng Windows.
Trở ngại
Sau khi bắt đầu cho đăng loạt bài này, chúng tôi nhận được nhiều câu hỏi từ phía bạn đọc: “Tôi có thể học script theo cách nào?”. Phản ứng đầu tiên của chúng tôi thường là chỉ cho người hỏi một số tài liệu như các sách viết về script, những bài báo, diễn đàn bàn luận về script… Vâng, câu trả lời kiểu này sẽ hữu ích cho những ai muốn chuyên tâm bắt tay làm từ đầu và tự rèn luyện mình nghiêm khắc để có được một kỹ năng. Nhưng như thế cũng thường khiến người ta phát sinh một tâm lý rất phổ biến: Ngại! Vì phải đầu tư quá nhiều thời gian, công sức!
Vậy chúng ta phải làm gì để học được kỹ năng script? Đầu tiên, có vẻ khá hài hước nhưng muốn học được thì bạn phải chuẩn bị tâm lý sẵn sàng đón nhận và chuẩn bị nhiệt tính lắng nghe! Hầu hết các quản trị viên Windows ban đầu khi muốn học về script đều vấp phải một lỗi là bập vào vấn đề chính ngay. Rồi sau đó phát sinh tâm lý ngại vì bị ngập trước quá nhiều vấn đề không dễ nắm bắt: những khái niệm không độc lập mà ràng buộc và liên quan đến nhau. Chẳng hạn, bạn sẽ không thể thực sự hiểu Thuộc tính (Property) là gì nếu không nắm bắt được Phương thức (Method). Và cả thuộc tính lẫn phương thức chỉ có thể sáng tỏ nếu đặt trong ngữ cảnh của Lớp (Class). Nhưng lớp lại phải diễn giải thành Đối tượng (Object) và mỗi đối tượng đều có thuộc tính, phương thức của nó! Chính xác hơn thì các Tham Chiếu Đối Tượng (Object Reference) vào một Thể hiện (Instance) của Lớp phải có Thuộc tính và Phương thức để bạn có thể đọc và thao tác. Nghe quá rối rắm phải không các bạn!
Chúng ta không thể dành ra tới ba năm để học từng Thuộc tính, Phương thức gắn với mỗi lớp WMI làm việc trong mạng Windows. Hoặc học từng khía cạnh trong cú pháp của ngôn ngữ VBScript chỉ để hoàn toàn thông thạo về nó. Trước đây, suốt những năm đầu của thời đại học, tôi đã phải bỏ ra rất nhiều thời gian để học Fortran, viết hết chương trình này đến chương trình khác, đầu tiên là hiển thị 10, sau đó đến 100, rồi đến một nghìn số Fibonacci, … Vì thế, với thời gian, tiền bạc và sự kiên nhẫn có hạn, cộng thêm các yếu tố khó khăn về bản chất của một số lượng lớn khái niệm trong Windows scripting, những quản trị viên như chúng ta cần phải làm gì để vượt qua được trở ngại trong vấn đề học script và biến nó trở thành thứ hữu ích trong tầm tay?
Khắc phục mọi trở ngại
Rõ ràng là chẳng có câu trả lời màu nhiệm nào cho câu hỏi đó, nhưng một số phương thức dưới đây có thể giúp bạn:
1. Chia nhỏ công việc ra: Chĩa súng lên trời tất nhiên sẽ không thể bắn được con chim dưới đất. Cho nên học ngay những cái chuyên sâu không phải là cách bắt đầu cho một vấn đề. Hãy đặt ra mục tiêu cho từng giai đoạn nhất định, như trong tuần này phải viết được script để truy vấn Active Directory cho cấu trúc OU trong một miền và hiển thị cấu trúc đó trong một trang HTML chẳng hạn. Còn tuần sau học các khái niệm mới hơn, viết một script khác minh hoạ cho chúng. Hãy cố gắng tìm kiếm những script đã có sẵn, đọc hiểu và chỉnh sửa chúng để thực hiện các yêu cầu riêng của mình. Ngoài ra, cho dù không cần hiểu sâu sắc toàn bộ từng dòng, từng lệnh trên script, hãy cố gắng tổng hợp chúng, tạo ra một script kết hợp thực hiện được chức năng mong muốn mà thậm chí bạn không cần hiểu gì về cấu trúc bên trong nó. Đó cũng là một cách học script.
2. Tập trung vào một số vấn đề trọng tâm của kỹ thuật scripting: Một trong các nhược điểm lớn nhất khi bắt đầu học một vấn đề là chúng ta luôn muốn biết mọi thứ của tất cả các khía cạnh vấn đề. Vì thế, khi bắt đầu học về script chúng ta thường cố gắng đọc toàn bộ từ đầu đến cuối những quyển sách viết về ngôn ngữ VBScript. Không cần nói bạn cũng hiểu đó là cách đọc cứng nhắc. Tốt hơn hết hãy tập trung vào một phần cụ thể, như các nhiệm vụ trên mạng TCP/IP scripting (mà chúng ta chú trọng trong loạt bài này) trước. Sau khi nắm vững và thông thạo rồi mới chuyển sang chủ đề khác.
3. Hãy bỏ thời gian để học những khái niệm cơ bản: Tập trung vào một số phần trọng tâm nhất định, nhưng đồng thời bạn cũng phải bỏ thời gian ra học những khái niệm cơ bản của vấn đề. Ví dụ như làm sao để nhập thông tin vào script dùng tham số thời gian chạy. Học một số cú pháp lệnh SELECT đơn giản. Học một số kiểu biến khác nhau. Học một số lớp WMI. Học cách dùng Thuộc tính và Phương thức cho từng lớp … Bạn không cần phải trở thành chuyên gia trong tất cả các lĩnh vực, nhưng cần nắm vững những thứ cơ bản để có thể viết được một script hoàn chỉnh thay vì từng đoạn nhỏ của nó.
4. Hãy ghi các chú thích cho những gì bạn học: Trước kia, suốt một thời gian dài tôi không thu được kết quả gì khi học về script, bởi các khái niệm của nó khá khó hiểu. Như bạn đã nói ở trên, suốt thời đại học tôi được làm quen và học những ngôn ngữ lập trình thủ tục như Fortran. Chúng trở thành kiến thức ăn sâu trong đầu óc khiến tôi rất khó chuyển sang kiểu ngôn ngữ hướng đối tượng khi chúng bắt đầu trở nên phổ biến (cho các admin Windows), và khi VBScript được phát triển từ Visual Basic. Bởi vậy mà suốt thời gian dài tôi lúng túng với Đối tượng, Thuộc tính, Phương thức, Lớp. Chúng tạo ra trở ngại rất lớn cho tôi để có thể học được script. Chắc chắn tôi có thể dùng một script của ai đó viết sẵn và nếu nó đơn giản, tôi có thể thay đổi, chỉnh sửa thêm bớt một chút để biến nó hoạt động theo ý mình. Nhưng MSDN lúc bấy giờ giống như một đất nước xa xôi, lạ lẫm và WMI là một thứ siêu nhiên huyền bí! Và rồi tôi bắt đầu viết các dòng chú thích. Một ngày, tôi viết ra một câu đơn giản: “Thuộc tính là những thứ bạn có thể đọc, còn phương thức là những thứ bạn có thể làm”, đột nhiên mọi thứ trở nên rõ ràng. Tôi hiểu được vấn đề và trở ngại không còn. Các khái niệm khác cũng nhanh chóng được nắm bắt và con đường đến với script không còn xa lạ và quá khó khăn nữa.
5. Thu thập tài liệu hữu ích để tham khảo và sử dụng: Nếu bạn tìm thấy một cuốn sách hay về script, đừng ngần ngại mua nó về đọc và làm bài tập thực hành luôn (nếu có). Ngoài ra, bạn có thể tham khảo thêm nhiều thứ tại TechNet Script Center (sẽ được chú ý ở các phần sau của loạt bài này). Một cách học hữu ích khác là tham gia vào các khoá đào tạo ngắn hạn, các cuộc thảo luận nhóm… Tài liệu về script không hề thiếu, thậm chí rất phong phú nếu bạn thực sự muốn học về nó. Quan trọng là bạn có chịu học và thực hành nó hay không mà thôi.
6. Thực hành, thực hành và thực hành: Muốn học tốt bất kỳ một kỹ năng nào cũng đòi hỏi bạn phải kiên nhẫn. Chỉ có làm đi làm lại nhiều lần mới tạo nên sự hoàn hảo. Sẽ còn nhiều trở ngại trên con đường đi tới thành công và đòi hỏi bạn phải có sự quyết tâm, tính bên bỉ để vượt qua chúng. Thông thường, bạn sẽ học được nhiều hơn từ vài trăm script ngắn thay vì tập viết một vài script dài và tổng hợp. Vì thế, hãy tự đặt ra và hoàn thành các bài tập ngắn thực hiện một công việc nào đấy. Bạn sẽ hiểu vấn đề nhanh hơn.
7. Hãy biến nó trở thành niềm đam mê hay một thú vui: Không biết bạn thế nào nhưng với tôi, việc học thu được hiệu quả cao nhất là khi ở trong tâm trạng vui vẻ. Nếu bạn có một số công việc quản trị liên quan đến script, chắc hẳn lúc ấy bạn mới bắt đầu quan tâm đến việc học nó. Và, nếu bạn thực sự bận rộn (mà mấy khi một quản trị viên mạng được rỗi rãi) thì cách dễ dàng nhất là nhờ một ai đó viết script cho bạn. Nhưng nếu coi script như một thú vui để khám phá, tương tự như môn đánh gôn thì bạn sẽ tiếp cận nó nhanh và làm được nhiều hơn những thứ mình học. Và cũng giống như đánh gôn, chơi cờ, có bạn chơi cùng bao giờ cũng thú vị hơn. Thử xem đồng nghiệp hay những người bạn chuyên gia IT có hứng thú chơi trò scripting không. Nếu có, hãy chia sẻ với họ, việc học sẽ vui và hiệu quả hơn nhiều.
Kết luận
Tôi viết ra bài này bởi nhận thấy nhiều bạn đọc gặp nhiều khó khăn và đã bắt đầu nản chí sau khi đọc xong bốn phần đầu tiên của loạt bài này. Hy vọng những gì viết ra ở đây có thể giúp bạn khắc phục được các trở ngại đó và tiếp tục tìm hiểu sâu hơn về scripting, một kỹ thuật không dễ nắm bắt nhưng rất hữu ích trong công việc quản trị mạng. Ở phần tiếp theo chúng ta sẽ trở lại khám phá lớp Win32_NetworkAdapterConfiguration và xem liệu còn có thể làm gì với nó. Đồng thời, chúng ta cũng sẽ học một số khái niệm mới và ôn lại những thứ đã được giới thiệu ở các phần trước. Chúng ta sẽ học thêm về cú pháp VBScript và xem liệu có thể làm gì để script gọn gàng hơn mà hữu ích hơn. Và sau đó là khám phá một số lớp WMI khác, cùng với một số chủ đề scripting nâng cao như chỉnh sửa thông tin thẩm định, viết mã script từ xa, các đối tượng COM, script WSF… Bên cạnh lý thuyết là một số công cụ hữu ích để viết script, nhưng việc học những khái niệm cơ bản đầu tiên là rất quan trọng. Nó giúp bạn hiểu sâu hơn về từng chủ đề và do đó tự tin hơn với các kỹ năng của mình. Tôi cũng sẽ cố gắng đưa ra cho các bạn một số bài tập để hoàn thiện script riêng bạn đã xây dựng. Và nếu thực sự muốn học về script, bạn cần phải tự làm chúng, đừng chỉ nhìn rồi nói: “Tôi có thể làm được!”. Thực hành nhiều sẽ giúp bạn viết được một script hoàn hảo. Vì thế, đừng quên nhiệm vụ quan trọng nhất là thực hành và thực hành.
Phần 6: Những bước đầu tiên về scripting remote
Phần 7: Xử lý sự cố lỗi
Phần 8: Xử lý lỗi kịch bản điều khiển từ xa bằng Network Monitor 3.0
Phần 9: Tìm hiểu kịch bản điều khiển xa
Phần 10: Các thủ thuật của kịch bản điều khiển xa
Phần 11: Các thủ thuật kịch bản khác
Phần 12: Các thuộc tính của lớp WMI
Phần 13: Kịch bản trả về tất cả các giá trị