Trang chủ » làm thế nào để » Trường Geek sử dụng PowerShell để lấy thông tin máy tính

    Trường Geek sử dụng PowerShell để lấy thông tin máy tính

    WMI và người anh em CIM mới hơn của nó đều có thể được sử dụng để quản lý các máy Windows trong môi trường của bạn. Nhưng bạn có biết sự khác biệt giữa chúng? Tham gia với chúng tôi khi chúng tôi xem.

    Hãy chắc chắn đọc các bài viết trước trong loạt bài:

    • Tìm hiểu cách tự động hóa Windows với 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 định dạng, lọc và so sánh trong PowerShell
    • Tìm hiểu cách sử dụng từ xa trong PowerShell

    Và theo dõi phần còn lại của loạt bài cả tuần.

    Giới thiệu

    WMI là viết tắt của Thiết bị quản lý Windows. Từ "Thiết bị đo lường" đề cập đến thực tế là WMI cho phép bạn có được 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 xe hơi 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 bộ phận bên trong ô tô của bạn.

    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ý trong máy của bạn. Điều đó có nghĩa là vì WMI có lớp Win32_Battery không có nghĩa là máy của bạn có 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 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 là rất không đáng tin cậy, chủ yếu là do nó dựa trên RPC (Cuộc gọi thủ tục từ xa), thực hiện một số điều điên rồ với các cổng mà họ chọn để liên lạc.

    Bắt đầu với Windows 8 và Server 2012, WMI đang dần bị loại bỏ theo 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 vận chuyển mà họ 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 sự khác biệt rất lớn. Trên phần cuối, 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ễ 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, kích hoạt nó và bạn sẽ có giao diện đồ họa để duyệt các Lớp WMI.

    Nếu bạn muốn tìm hiểu điều gì đó về cấu hình đĩa của máy tính, hãy nhấn tổ hợp bàn phím Ctrl + F để hiển thị hộp tìm kiếm, sau đó nhập vào logic Logicdisk và nhấn enter.

    Ngay lập tức, điều này sẽ đưa bạn đến lớp Win32_LogicalDisk.

    Ở nửa dưới của ứng dụng, bạn có thể thấy chúng tôi có hai phiên bản của lớp.

    Khi chúng tôi có lớp mà chúng tôi đang tìm kiếm, việc truy vấn nó từ PowerShell rất đơn giản.

    Get-WmiObject -Query Từ CHỌN * TỪ Win32_LogicalDisk

    Tôi đã không thấy cú pháp đó trong một thời gian với mọi người ngày nay thích sử dụng cú pháp tham số hóa mới.

    Nhận-WmiObject -Class Win32_LogicalDisk

    Nếu bạn muốn lấy thông tin từ một máy tính khác trong mạng của mình, bạn chỉ cần sử dụng tham số ComputerName.

    Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ Administrator

    Sử dụng CIM

    Hãy nhớ rằng CIM chỉ khả dụng trên Windows 8 và Server 2012, tiến về phía trước đây chắc chắn là con đường để đi.

    Get-CimInstance -ClassName Win32_LogicalDisk

    Ngoài ra còn có tab hoàn thành cho tham số -ClassName khi sử dụng Get-CimInstance, điều này cho thấy rằng trong tương lai, đây sẽ là nơi tập trung nỗ lực của Microsoft.

    Trên 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ó để dọn sạch mớ hỗn độn mà WMI để lại. Trong nỗ lực khắc phục tình trạng này, họ đang cố gắng làm cho WMI và CIM trở nên khả dụng hơn bằng cách viết các lệnh ghép ngắn sử dụng WMI và CIM bên dưới mui xe. Cách duy nhất để kiểm tra xem một lệnh ghép ngắn có phải là trình bao bọc hay không là bằng cách xem tài liệu. Ví dụ: lệnh ghép ngắn Get-Hotfix là trình bao bọc cho lớp Win32_QuickFixEngineering, như đã thấy trong tài liệu.

    Điều đó có nghĩa là bạn có thể nhận các hotfix trên các máy từ xa bằng cách sử dụng lệnh ghép ngắn Get-HotFix thay vì Truy vấn WMI.

    Get-HotFix -ComputerName localhost

    Vì vậy, có bạn có nó. Chỉ cần nhớ rằng nếu có một lệnh ghép ngắn chuyên dụng, bạn sẽ luôn muốn sử dụng nó, theo sau là CIM nên một lệnh ghép ngắn không tồn tại. Cuối cùng, nếu tất cả các lỗi khác hoặc bạn có máy cũ hơn trong môi trường của mình, bạn sẽ muốn sử dụng WMI. Đó là tất cả những gì tôi có trong thời gian này. Hẹn gặp lại vào ngày mai để có thêm niềm vui PowerShell.