27Aug

Geek School: Bruke PowerShell til å få informasjon om datamaskinen

click fraud protection

WMI og nyere broder CIM kan begge brukes til å styre Windows-maskiner i ditt miljø.Men vet du forskjellen mellom dem? Bli med oss ​​når vi tar en titt.

Husk å lese de forrige artiklene i serien:

  • Lær hvordan du automatiserer Windows med PowerShell
  • Lær å bruke Cmdlets i PowerShell
  • Lær hvordan du bruker objekter i PowerShell
  • Lær formatering, filtrering og sammenligning i PowerShell
  • Lær å bruke Remoting iPowerShell

Og hold deg innstilt for resten av serien hele uken.

Introduksjon

WMI står for Windows Management Instrumentation. Ordet "Instrumentasjon" refererer til det faktum at WMI gir deg mulighet til å få informasjon om datamaskinens interne tilstand, akkurat som instrumentbrettinstrumenter i bilen din kan hente og vise informasjon om tilstanden til bilens interne komponenter.

WMI består av et lager som inneholder klasser som representerer komponenter som kan administreres i maskinen. Dermed mener vi bare fordi WMI har en Win32_Battery-klasse, betyr ikke at maskinen inneholder et batteri. Disse klassene kan deretter bli forespurt for informasjon lokalt eller til og med på tvers av et nettverk ved hjelp av et spørrespråk som ligner SQL som kalles WQL.Imidlertid har WMI vært kjent for å være svært upålitelig, hovedsakelig på grunn av det faktum at den er basert på RPC( Remote Procedure Calls), som gjør noen galne ting med portene de velger å kommunisere på.

instagram viewer

Fra og med Windows 8 og Server 2012 blir WMI faset ut til fordel for den vanlige informasjonsmodellen eller CIM for kort. Den eneste forskjellen mellom WMI og CIM er transportprotokollene de bruker. Mens WMI utfører spørringer ved hjelp av Remote Procedure Calls, bruker CIM HTTP, som ser ut som en stor forskjell. På baksiden snakker de fremdeles med det samme oppbevaringsstedet.

Bruke WMI

Den raskeste og enkleste måten å utforske informasjonen tilgjengelig på via WMI, er å ta tak i en kopi av en hvilken som helst gratis WMI Object Browser. Vi liker denne. Når du har lastet ned, brann den opp, og du vil ha et grafisk grensesnitt for å bla gjennom WMI-klassene.

bilde

Hvis du vil finne ut noe om en datamaskinens diskkonfigurasjon, trykker du på Ctrl + F-tastaturkombinasjonen for å få opp en søkeboks, skriv deretter "logisk disk" og trykk enter.

bilde

Umiddelbart vil dette ta deg til klassen Win32_LogicalDisk.

bilde

På den nederste halvdelen av søknaden kan du se at vi har to forekomster av klassen.

bilde

Når vi har den klassen vi leter etter, spør det fra PowerShell rett fram.

Get-WmiObject -Query "VELG * FRA Win32_LogicalDisk"

bilde

Jeg har ikke sett det syntaxet en stund med folk i disse dager, og foretrekker å bruke den nye parameteriserte syntaksen.

Get-WmiObject -Class Win32_LogicalDisk

bilde

Hvis du vil hente informasjonen fra en annen datamaskin på nettverket ditt, kan du bare bruke parameteren ComputerName.

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

bilde

Bruke CIM

Husk at CIM bare er tilgjengelig på Windows 8 og Server 2012, fremover er dette definitivt veien å gå.

Get-CimInstance -ClassName Win32_LogicalDisk

bilde

Det er også tabulasjonsavslutning for parameteren -ClassName når du bruker Get-CimInstance, noe som viser at dette skjer hvor Microsofts innsats vil bli fokusert.

Faktisk ble WMI utviklet av et helt eget team i Microsoft, men har senere blitt overtatt av de ansvarlige for PowerShell. De var de som la merke til at det kommer til å være veldig vanskelig å rydde opp rotet WMI igjen. I et forsøk på å rette opp situasjonen, prøver de å gjøre WMI og CIM mer tilgjengelig ved å skrive wrapper cmdlets som bruker WMI og CIM under hetten. Den eneste måten å sjekke om en cmdlet er en innpakning, er å se på dokumentasjonen. For eksempel er Get-Hotfix cmdlet et omslag for Win32_QuickFixEngineering-klassen, som vist i dokumentasjonen.

bilde

Det betyr at du kan få hurtigreparasjonene på eksterne maskiner ved hjelp av Get-HotFix cmdlet i stedet for et WMI-spørring.

Get-HotFix -ComputerName localhost

bilde

Så der har du det. Bare husk at hvis det er en dedikert cmdlet vil du alltid bruke den, fulgt opp av CIM, hvis en cmdlet ikke eksisterer. Til slutt, hvis alt annet feiler, eller du har eldre maskiner i ditt miljø, vil du bruke WMI.Det er alt jeg har for denne gangen. Vi ses i morgen for mer PowerShell-moro.