If-Koubou

Geek School: Folosind PowerShell pentru a obține informații despre computer

Geek School: Folosind PowerShell pentru a obține informații despre computer (Cum să)

WMI și fratele său mai recent CIM pot fi utilizate atât pentru a gestiona mașinile Windows în mediul dvs. Dar știi diferența dintre ei? Alăturați-vă nouă, când aruncăm o privire.

Asigurați-vă că citiți articolele anterioare din seria:

  • Aflați cum să automatizați Windows cu PowerShell
  • Învățați să utilizați Cmdlets în PowerShell
  • Învățați cum să utilizați obiecte în PowerShell
  • Învățarea formatării, filtrarea și compararea în PowerShell
  • Aflați cum să utilizați Remoting în PowerShell

Și stați liniștit pentru restul seriei toată săptămâna.

Introducere

WMI înseamnă Windows Management Instrumentation. Cuvântul "Instrumentation" se referă la faptul că WMI vă permite să obțineți informații despre starea internă a computerului dvs., la fel ca instrumentele de bord din mașina dvs. pot recupera și afișa informații despre starea componentelor interne ale mașinilor dvs.

WMI constă dintr-un depozit care conține clase care reprezintă componente care ar putea fi gestionate în interiorul mașinii. Prin aceasta înțelegem doar pentru că WMI are o clasă Win32_Battery, nu înseamnă că mașina dvs. conține o baterie. Aceste clase pot fi apoi interogate pentru informații la nivel local sau chiar într-o rețea utilizând o limbă de interogare foarte asemănătoare cu SQL numită WQL. Cu toate acestea, WMI a fost cunoscută a fi foarte nesigură, mai ales datorită faptului că se bazează pe procedurile RPC (Remote Procedure Calls), care fac unele lucruri nebunești cu porturile pe care aleg să le comunice.

Începând cu Windows 8 și Server 2012, WMI este eliminat în favoarea modelului comun de informații sau CIM pe scurt. Singura diferență dintre WMI și CIM este protocolul de transport pe care îl utilizează. În timp ce WMI efectuează interogări utilizând procedurile de apel la distanță, CIM utilizează HTTP, ceea ce pare să facă o diferență enormă. Pe backend încă vorbește cu același depozit de informații.

Utilizarea WMI

Cea mai rapidă și mai ușoară modalitate de a explora informațiile disponibile prin intermediul WMI este să apucați o copie a oricărui browser gratuit WMI Object Browser. Ne place asta. După descărcare, închideți-l și veți avea o interfață grafică pentru a căuta clasele WMI.

Dacă doriți să aflați ceva despre configurația discului unui computer, apăsați combinația de taste Ctrl + F pentru a afișa o casetă de căutare, apoi tastați "logicaldisk" și apăsați enter.

Imediat, aceasta vă va duce la clasa Win32_LogicalDisk.

În partea de jos a aplicației, puteți vedea că avem două instanțe ale clasei.

Odată ce avem clasa pe care o căutăm, interogarea de la PowerShell este directă.

Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"

Nu am văzut această sintaxă pentru o vreme, cu oameni care preferă să folosească noua sintaxă parametrizată.

Obțineți-WmiObject -Class Win32_LogicalDisk

Dacă doriți să obțineți informațiile de pe un alt computer din rețea, puteți pur și simplu să utilizați parametrul ComputerName.

Obțineți-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator

Utilizând CIM

Ținând cont de faptul că CIM este disponibil numai pe Windows 8 și Server 2012, avansarea este cu siguranță o cale de urmat.

Get-CimInstance -ClassName Win32_LogicalDisk

Există, de asemenea, finalizarea tab-ului pentru parametrul -ClassName atunci când se utilizează Get-CimInstance, ceea ce arată că înainte de aceasta, eforturile Microsoft vor fi concentrate.

De fapt, WMI a fost dezvoltat de o echipă complet separată de Microsoft, dar ulterior a fost preluată de cei care se ocupă de PowerShell. Ei au fost cei care au observat că va fi foarte greu să curețe mizeria WMI lăsată în urmă. Într-o încercare de a remedia situația, ei încearcă să facă WMI și CIM mai accesibile scriind cmdleturi de tip wrap care utilizează WMI și CIM sub capotă. Singura modalitate de a verifica dacă un cmdlet este un înveliș este prin examinarea documentației. De exemplu, cmdlet-ul Get-Hotfix este un înveliș pentru clasa Win32_QuickFixEngineering, așa cum se vede în documentație.

Asta înseamnă că puteți obține remedierile rapide pe mașini la distanță folosind cmdlet-ul Get-HotFix în loc de o interogare WMI.

Get-HotFix -ComputerName localhost

Deci, tu o ai. Amintiți-vă că dacă există un cmdlet dedicat, veți dori întotdeauna să-l utilizați, urmat de CIM dacă un cmdlet nu există. În cele din urmă, dacă toate celelalte nu reușesc sau dacă aveți mașini mai vechi în mediul dvs., veți dori să utilizați WMI. Asta e tot ce am pentru acest moment. Ne vedem mâine pentru mai multă distracție PowerShell.