Hãy nhớ đọc các bài viết trước trong loạt bài này:
- Tìm hiểu cách tự động hóa Windows bằng PowerShell
- Học cách sử dụng Cmdlets trong PowerShell
- Học cách sử dụng các đối tượng trong PowerShell
- Học cách định dạng, lọc và so sánh trong PowerShell
- Tìm hiểu cách sử dụng Remoting trong PowerShell
Và hãy theo dõi phần còn lại của loạt phim trong tuần.
Giới thiệu
WMI là viết tắt của Windows Management Instrumentation. Từ "Instrumentation" đề cập đến thực tế là WMI cho phép bạn lấy thông tin về trạng thái bên trong của máy tính, giống như các công cụ bảng điều khiển trong ô tô của bạn có thể truy xuất và hiển thị thông tin về trạng thái của các thành phần bên trong xe.
WMI bao gồm một kho chứa các lớp đại diện cho các thành phần có thể được quản lý bên trong máy của bạn. Bởi vì chúng tôi có nghĩa là chỉ vì WMI có một lớp Win32_Battery không có nghĩa là máy của bạn có chứa pin. Các lớp này sau đó có thể được truy vấn thông tin cục bộ hoặc thậm chí trên một mạng bằng cách sử dụng một ngôn ngữ truy vấn rất giống với SQL được gọi là WQL. Tuy nhiên, WMI đã được biết đến là rất không đáng tin cậy, chủ yếu là do thực tế là nó dựa trên RPC (Remote Procedure Calls), làm một số điều điên rồ với các cổng mà họ chọn để giao tiếp.
Bắt đầu với Windows 8 và Server 2012, WMI hiện đang được loại bỏ theo xu hướng của Mô hình thông tin chung hoặc CIM. Sự khác biệt duy nhất giữa WMI và CIM là các giao thức truyền tải mà chúng sử dụng. Trong khi WMI thực hiện các truy vấn bằng cách sử dụng các cuộc gọi thủ tục từ xa, CIM sử dụng HTTP, điều này dường như tạo ra một sự khác biệt rất lớn. Trên backend họ vẫn đang nói chuyện với cùng một kho thông tin.
Sử dụng WMI
Cách nhanh nhất và dễ dàng nhất để khám phá thông tin có sẵn cho bạn thông qua WMI là lấy một bản sao của bất kỳ Trình duyệt đối tượng WMI miễn phí nào. Chúng tôi thích cái này Sau khi tải xuống, hãy kích hoạt nó và bạn sẽ có một giao diện đồ họa để duyệt qua các Lớp WMI.
Get-WmiObject -Query “SELECT * FROM Win32_LogicalDisk”
Get-WmiObject –Class Win32_LogicalDisk
Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper –Credential viperadministrator
Sử dụng CIM
Hãy nhớ rằng CIM chỉ có sẵn trên Windows 8 và Server 2012, di chuyển về phía trước đây chắc chắn là con đường để đi.
Get-CimInstance –ClassName Win32_LogicalDisk
Trong thực tế, WMI được phát triển bởi một nhóm hoàn toàn riêng biệt trong Microsoft, nhưng sau đó đã được tiếp quản bởi những người phụ trách PowerShell. Họ là những người nhận thấy rằng sẽ rất khó khăn để dọn sạch WMI hỗn độn để lại phía sau. Trong một nỗ lực để khắc phục tình trạng này, họ đang cố gắng làm cho WMI và CIM sẵn sàng hơn bằng cách viết các lệnh ghép ngắn có sử dụng WMI và CIM bên dưới mui xe. Cách duy nhất để kiểm tra xem cmdlet có phải là trình bao bọc hay không bằng cách xem tài liệu. Ví dụ, lệnh Get-Hotfix là một trình bao bọc cho lớp Win32_QuickFixEngineering, như đã thấy trong tài liệu.
Get-HotFix –ComputerName localhost