โฮมเพจ » ทำอย่างไร » โรงเรียน Geek โดยใช้ PowerShell เพื่อรับข้อมูลคอมพิวเตอร์

    โรงเรียน Geek โดยใช้ PowerShell เพื่อรับข้อมูลคอมพิวเตอร์

    WMI และ CIM ที่ใหม่กว่านั้นสามารถใช้เพื่อจัดการเครื่อง Windows ในสภาพแวดล้อมของคุณ แต่คุณรู้ความแตกต่างระหว่างพวกเขาหรือไม่ เข้าร่วมกับเราในขณะที่เราดู.

    อย่าลืมอ่านบทความก่อนหน้าในซีรีย์:

    • เรียนรู้วิธีอัตโนมัติของ Windows ด้วย PowerShell
    • เรียนรู้การใช้ Cmdlets ใน PowerShell
    • เรียนรู้วิธีใช้วัตถุใน PowerShell
    • การเรียนรู้การจัดรูปแบบการกรองและการเปรียบเทียบใน PowerShell
    • เรียนรู้การใช้ Remoting ใน PowerShell

    และคอยติดตามตลอดซีรีย์ที่เหลือตลอดทั้งสัปดาห์.

    บทนำ

    WMI ย่อมาจาก Windows Management Instrumentation คำว่า "การประพันธ์ดนตรี" หมายถึงความจริงที่ว่า WMI ช่วยให้คุณได้รับข้อมูลเกี่ยวกับสถานะภายในของคอมพิวเตอร์ของคุณเช่นเดียวกับที่แผงหน้าปัดในรถของคุณสามารถดึงและแสดงข้อมูลเกี่ยวกับสถานะของส่วนประกอบภายในรถยนต์ของคุณ.

    WMI ประกอบด้วยที่เก็บซึ่งมีคลาสที่แสดงส่วนประกอบที่สามารถจัดการได้ภายในเครื่องของคุณ โดยที่เราหมายถึงเพียงเพราะ WMI มีระดับ Win32_Battery ไม่ได้หมายความว่าเครื่องของคุณมีแบตเตอรี่ ชั้นเรียนเหล่านี้สามารถสอบถามข้อมูลในท้องถิ่นหรือผ่านเครือข่ายโดยใช้ภาษาแบบสอบถามคล้ายกับ SQL ที่เรียกว่า WQL อย่างไรก็ตาม WMI เป็นที่รู้จักกันไม่น่าเชื่อถือส่วนใหญ่เนื่องมาจากความจริงที่ว่ามันขึ้นอยู่กับ RPC (Remote Procedure Calls) ซึ่งทำสิ่งที่บ้าคลั่งกับพอร์ตที่พวกเขาเลือกที่จะสื่อสาร.

    เริ่มต้นด้วย Windows 8 และ Server 2012 WMI กำลังถูกเลิกใช้งานในรูปแบบ Common Information Model หรือ CIM โดยย่อ ข้อแตกต่างระหว่าง WMI และ CIM คือโปรโตคอลการส่งผ่านที่ใช้ ในขณะที่ WMI ทำการสืบค้นโดยใช้ Remote Procedure Calls CIM ใช้ HTTP ซึ่งดูเหมือนจะสร้างความแตกต่างอย่างมาก ในแบ็กเอนด์พวกเขายังคงพูดคุยกับพื้นที่เก็บข้อมูลเดียวกัน.

    ใช้ WMI

    วิธีที่รวดเร็วและง่ายที่สุดในการสำรวจข้อมูลที่มีให้คุณผ่าน WMI คือการคัดลอก WMI Object Browser ฟรีใด ๆ เราชอบอันนี้ เมื่อดาวน์โหลดเสร็จแล้วก็จะมีส่วนต่อประสานกราฟิกเพื่อเรียกดู WMI Classes.

    หากคุณต้องการหาข้อมูลบางอย่างเกี่ยวกับการกำหนดค่าดิสก์ของคอมพิวเตอร์ให้กดแป้นผสม Ctrl + F เพื่อเปิดช่องค้นหาจากนั้นพิมพ์“ logicaldisk” แล้วกด Enter.

    ทันทีนี้จะนำคุณไปยังคลาส Win32_LogicalDisk.

    ในครึ่งล่างของแอปพลิเคชันคุณจะเห็นว่าเรามีคลาสสองอินสแตนซ์.

    เมื่อเรามีชั้นเรียนที่เรากำลังมองหาการสอบถามจาก PowerShell ตรงไปข้างหน้า.

    Get-WmiObject- แบบสอบถาม“ เลือก * จาก Win32_LogicalDisk”

    ฉันไม่เห็นไวยากรณ์นั้นอยู่พักหนึ่งกับผู้คนในปัจจุบันที่ต้องการใช้ไวยากรณ์ที่ปรับเปลี่ยนใหม่.

    Get-WmiObject -Class Win32_LogicalDisk

    หากคุณต้องการรับข้อมูลจากคอมพิวเตอร์เครื่องอื่นบนเครือข่ายของคุณคุณสามารถใช้พารามิเตอร์ ComputerName.

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

    ใช้ CIM

    โปรดทราบว่า CIM นั้นมีเฉพาะใน Windows 8 และ Server 2012 เท่านั้นการก้าวไปข้างหน้านี่เป็นวิธีที่แน่นอน.

    รับ -CimInstance -ClassName Win32_LogicalDisk

    นอกจากนี้ยังมีความสมบูรณ์ของแท็บสำหรับพารามิเตอร์ -ClassName เมื่อใช้ Get-CimInstance ซึ่งแสดงให้เห็นว่าการก้าวไปข้างหน้านี่คือจุดที่ความพยายามของ Microsoft มุ่งเน้น.

    ในความเป็นจริง WMI ได้รับการพัฒนาโดยทีมงานแยกต่างหากภายใน Microsoft แต่ต่อมาถูกยึดครองโดยคนที่รับผิดชอบ PowerShell พวกเขาเป็นคนที่สังเกตเห็นว่ามันเป็นเรื่องยากมากที่จะทำความสะอาดระเบียบที่ WMI ทิ้งไว้ ในความพยายามที่จะแก้ไขสถานการณ์พวกเขากำลังพยายามทำให้พร้อมใช้งาน WMI และ CIM มากขึ้นโดยการเขียนคำสั่ง wrapper cmdlet ที่ใช้ WMI และ CIM ใต้ฝากระโปรง วิธีเดียวที่จะตรวจสอบว่า cmdlet เป็น wrapper หรือไม่โดยดูที่เอกสาร ตัวอย่างเช่น cmdlet Get-Hotfix เป็น wrapper สำหรับคลาส Win32_QuickFixEngineering ดังที่เห็นในเอกสารประกอบ.

    นั่นหมายความว่าคุณสามารถรับโปรแกรมแก้ไขด่วนบนเครื่องระยะไกลได้โดยใช้ Get-HotFix cmdlet แทนที่จะเป็น WMI Query.

    Get-HotFix -ComputerName localhost

    ดังนั้นคุณมีมัน เพียงจำไว้ว่าถ้ามี cmdlet เฉพาะคุณจะต้องการใช้มันเสมอตามมาด้วย CIM หาก cmdlet ไม่มีอยู่จริง ในที่สุดหากทุกอย่างล้มเหลวหรือคุณมีเครื่องจักรรุ่นเก่าในสภาพแวดล้อมของคุณคุณจะต้องใช้ WMI นั่นคือทั้งหมดที่ฉันมีในเวลานี้ พบกันใหม่พรุ่งนี้เพื่อความสนุก PowerShell.