27Aug

Geekskola: Använda PowerShell för att få datorinformation

click fraud protection

WMI och dess nyare bror CIM kan båda användas för att hantera Windows-maskinerna i din miljö.Men vet du skillnaden mellan dem? Följ med oss ​​när vi tittar.

Var noga med att läsa tidigare artiklar i serien:

  • Lär dig att automatisera Windows med PowerShell
  • Lär dig använda Cmdlets i PowerShell
  • Lär dig hur du använder objekt i PowerShell
  • Lär dig formatering, filtrering och jämförelse i PowerShell
  • Lär dig använda Remoting iPowerShell

Och håll dig uppdaterad för resten av serien hela veckan.

Introduktion

WMI står för Windows Management Instrumentation. Ordet "Instrumentation" hänvisar till det faktum att WMI gör att du kan få information om datorns interna tillstånd, precis som instrumentbrädans instrument i din bil kan hämta och visa information om tillståndet för dina bilares interna komponenter.

WMI består av ett förråd som innehåller klasser som representerar komponenter som kan hanteras inom din maskin. Med det menar vi bara för att WMI har en Win32_Battery-klass betyder inte att din maskin innehåller ett batteri. Dessa klasser kan sedan ställas in för information lokalt eller till och med över ett nätverk med ett fråge språk som mycket liknar SQL som kallas WQL.WMI har dock varit känt för att vara mycket opålitligt, främst på grund av att det är baserat på RPC( Remote Procedure Calls), som gör några galna saker med de portar de väljer att kommunicera på.

instagram viewer

Startar med Windows 8 och Server 2012, fasas WMI ut till förmån för den gemensamma informationsmodellen eller CIM för korta. Den enda skillnaden mellan WMI och CIM är de transportprotokoll som de använder. Medan WMI utför frågor med fjärrproceduranrop använder CIM HTTP, vilket tycks göra en stor skillnad. På baksidan pratar de fortfarande med samma förvaringsplats.

Använda WMI

Det snabbaste och enklaste sättet att utforska den information som finns tillgänglig via WMI, är att fånga en kopia av alla gratis WMI-objektbläddrare. Vi gillar den här. När du har laddat ner, skjuter den upp och du kommer att ha ett grafiskt gränssnitt för att bläddra i WMI-klasserna.

bild

Om du vill ta reda på något om en dators diskkonfiguration, tryck på Ctrl + F-tangentbordskombinationen för att få fram en sökruta och skriv sedan "logicaldisk" och tryck på enter.

bild

Omedelbart tar det dig till klassen Win32_LogicalDisk.

bild

I den nedre halvan av ansökan kan du se att vi har två fall av klassen.

bild

När vi har den klass vi letar efter, frågar den från PowerShell är rakt framåt.

Get-WmiObject -Query "VÄLJ * FRÅN Win32_LogicalDisk"

bild

Jag har inte sett den syntaxen för ett tag med människor i dessa dagar föredrar att använda den nya parametrerade syntaxen.

Get-WmiObject -Class Win32_LogicalDisk

bild

Om du vill hämta informationen från en annan dator i ditt nätverk kan du helt enkelt använda parametern ComputerName.

Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ administratör

bild

Använda CIM

Tänk på att CIM endast är tillgängligt på Windows 8 och Server 2012, och det är definitivt det bästa sättet att gå vidare.

Get-CimInstance -ClassName Win32_LogicalDisk

bild

Det finns också flikavslutning för parametern -ClassName när du använder Get-CimInstance, vilket visar att framsteg här är där Microsofts ansträngningar kommer att fokuseras.

I själva verket har WMI utvecklats av ett helt separat team inom Microsoft, men har därefter tagits över av de ansvariga för PowerShell. De var de som märkte att det kommer att bli väldigt svårt att städa upp roten WMI kvar. I ett försök att avhjälpa situationen försöker de göra WMI och CIM mer tillgängliga genom att skriva wrapper cmdlets som använder WMI och CIM under huven. Det enda sättet att kontrollera om en cmdlet är en omslag är genom att titta på dokumentationen. Exempelvis är cmdlet Get-Hotfix en omslag för Win32_QuickFixEngineering-klassen, vilket framgår av dokumentationen.

bild

Det betyder att du kan få snabbkorrigeringarna på fjärrmaskiner med hjälp av Get-HotFix cmdlet istället för en WMI-fråga.

Get-HotFix -ComputerName localhost

bild

Så där har du det. Kom bara ihåg att om det finns en dedikerad cmdlet, vill du alltid använda den, följd av CIM, om en cmdlet inte existerar. Slutligen, om allt annat misslyckas, eller om du har äldre maskiner i din miljö, vill du använda WMI.Det är allt jag har för den här gången. Vi ses i morgon för mer PowerShell-kul.