Sekolah Geek Menggunakan PowerShell untuk Dapatkan Maklumat Komputer
WMI dan saudara yang lebih baru CIM boleh digunakan untuk menguruskan mesin Windows di persekitaran anda. Tetapi adakah anda tahu perbezaan antara mereka? Sertai kami seperti yang kita lihat.
Pastikan anda membaca artikel sebelumnya dalam siri ini:
- Ketahui Bagaimana Mengotomatikkan Windows dengan PowerShell
- Belajar Menggunakan Cmdlets di PowerShell
- Belajar Cara Menggunakan Objek di PowerShell
- Pemformatan Pembelajaran, Penapisan dan Pembandingan di PowerShell
- Belajarlah Menggunakan Remoting dalam PowerShell
Dan tunggu selama siri sepanjang minggu.
Pengenalan
WMI bermaksud Instrumentasi Pengurusan Windows. Perkataan "Instrumentasi" merujuk kepada fakta bahawa WMI membolehkan anda mendapatkan maklumat mengenai keadaan dalaman komputer anda, sama seperti instrumen papan pemuka di dalam kereta anda boleh mengambil dan memaparkan maklumat mengenai keadaan komponen dalaman kereta anda.
WMI terdiri daripada repositori yang mengandungi kelas yang mewakili komponen yang boleh diurus dalam mesin anda. Dengan itu kita hanya bermaksud kerana WMI mempunyai kelas Win32_Battery tidak bermakna mesin anda mengandungi bateri. Kelas-kelas ini kemudian boleh dipertanyakan untuk maklumat di dalam negara atau bahkan merentas rangkaian menggunakan bahasa pertanyaan yang sangat mirip dengan SQL yang disebut WQL. Walau bagaimanapun, WMI telah diketahui sangat tidak boleh dipercayai, kebanyakannya disebabkan fakta bahawa ia berasaskan RPC (Remote Procedure Panggilan), yang melakukan beberapa perkara gila dengan pelabuhan yang mereka pilih untuk berkomunikasi.
Bermula dengan Windows 8 dan Server 2012, WMI sedang dimansuhkan memihak kepada Model Maklumat Biasa atau CIM untuk jangka pendek. Satu-satunya perbezaan antara WMI dan CIM ialah protokol pengangkutan yang mereka gunakan. Walaupun WMI melakukan pertanyaan menggunakan Panggilan Prosedur Jauh, CIM menggunakan HTTP, yang seolah-olah membuat perbezaan yang sangat besar. Pada backend mereka masih bercakap dengan repositori maklumat yang sama.
Menggunakan WMI
Cara paling cepat dan paling mudah untuk meneroka maklumat yang tersedia untuk anda melalui WMI adalah untuk mengambil salinan mana-mana Pelayar Objek WMI percuma. Kami suka yang ini. Sebaik sahaja dimuat turun, apikan dan anda akan mempunyai antara muka grafik untuk melayari Kelas WMI.
Jika anda ingin mengetahui sesuatu tentang konfigurasi cakera komputer, tekan kombinasi keyboard Ctrl + F untuk membuka kotak carian, kemudian taipkan "logicaldisk" dan tekan enter.
Segera ini akan membawa anda ke kelas Win32_LogicalDisk.
Pada separuh bahagian bawah aplikasi, anda dapat melihat kami mempunyai dua contoh kelas.
Sebaik sahaja kita mempunyai kelas yang kita cari, pertanyaan dari PowerShell adalah lurus ke hadapan.
Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"
Saya tidak melihat sintaks sebentar dengan orang-orang hari ini lebih suka menggunakan sintaks parameter yang baru.
Get-WmiObject -Class Win32_LogicalDisk
Jika anda ingin mendapatkan maklumat dari komputer lain di rangkaian anda, anda boleh menggunakan parameter ComputerName sahaja.
Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator
Menggunakan CIM
Mengingati bahawa CIM hanya tersedia pada Windows 8 dan Server 2012, bergerak ke hadapan ini pasti cara untuk pergi.
Get-CimInstance -ClassName Win32_LogicalDisk
Terdapat juga penyelesaian tab untuk parameter -ClassName apabila menggunakan Get-CimInstance, yang menunjukkan bahawa masa depan ini adalah di mana usaha Microsoft akan difokuskan.
Malah, WMI telah dibangunkan oleh pasukan yang sama sekali terpisah dalam Microsoft, tetapi kemudiannya telah diambil alih oleh orang yang bertanggungjawab terhadap PowerShell. Mereka adalah orang-orang yang menyedari bahawa ia akan menjadi sangat sukar untuk membersihkan kekacauan WMI yang tertinggal. Dalam usaha untuk memperbaiki keadaan, mereka cuba membuat WMI dan CIM lebih banyak tersedia dengan menulis cmdlet bungkus yang menggunakan WMI dan CIM di bawah hud. Satu-satunya cara untuk memeriksa sama ada cmdlet adalah bungkus adalah dengan melihat dokumentasi. Sebagai contoh, cmdlet Get-Hotfix ialah wrapper untuk kelas Win32_QuickFixEngineering, seperti yang dilihat dalam dokumentasi.
Ini bermakna anda boleh mendapatkan perbaikan terbaru pada mesin jauh menggunakan cmdlet Get-HotFix dan bukannya WMI Query.
Get-HotFix -ComputerName localhost
Jadi di sana anda memilikinya. Ingatlah bahawa jika ada cmdlet yang berdedikasi anda akan sentiasa menggunakannya, diikuti oleh CIM sekiranya cmdlet tidak wujud. Akhir sekali, jika semuanya gagal, atau anda mempunyai mesin lama di persekitaran anda, anda akan mahu menggunakan WMI. Itulah yang saya ada buat kali ini. Lihat esok untuk lebih menyeronokkan PowerShell.