Ophalen van WMI-objecten (Get-WmiObject)Getting WMI Objects (Get-WmiObject)

Ophalen van WMI-objecten (Get-WmiObject)Getting WMI Objects (Get-WmiObject)

Windows Management Instrumentation (WMI) is een belangrijke technologie voor Windows Systeembeheer omdat een breed scala aan gegevens op uniforme wijze worden getoond.Windows Management Instrumentation (WMI) is a core technology for Windows system administration because it exposes a wide range of information in a uniform manner. Vanwege hoeveel WMI mogelijk uit de Windows PowerShell-cmdlet voor toegang tot WMI-objecten maakt Get-WmiObject, is een van de meest geschikt voor echte werk.Because of how much WMI makes possible, the Windows PowerShell cmdlet for accessing WMI objects, Get-WmiObject, is one of the most useful for doing real work. We gaan bespreken Get-WmiObject gebruiken voor toegang tot WMI-objecten en vervolgens op het gebruik van WMI-objecten om specifieke dingen te doen.We are going to discuss how to use Get-WmiObject to access WMI objects and then how to use WMI objects to do specific things.

Aanbieding WMI-klassenListing WMI Classes

Het eerste probleem optreden van de meeste gebruikers van de WMI-probeert om erachter te komen wat u met WMI doen kunt.The first problem most WMI users encounter is trying to find out what can be done with WMI. WMI-klassen beschrijven de bronnen die kunnen worden beheerd.WMI classes describe the resources that can be managed. Er zijn honderden WMI-klassen, waarvan sommige tientallen eigenschappen bevatten.There are hundreds of WMI classes, some of which contain dozens of properties.

Get-WmiObject lost dit probleem doordat WMI kunnen worden gedetecteerd.Get-WmiObject addresses this problem by making WMI discoverable. U kunt een lijst met de WMI-klassen beschikbaar op de lokale computer krijgen door te typen:You can get a list of the WMI classes available on the local computer by typing:

PS> Get-WmiObject -List

__SecurityRelatedClass                  __NTLMUser9X
__PARAMETERS                            __SystemSecurity
__NotifyStatus                          __ExtendedStatus
Win32_PrivilegesStatus                  Win32_TSNetworkAdapterSettingError
Win32_TSRemoteControlSettingError       Win32_TSEnvironmentSettingError
...

U kunt dezelfde gegevens vanaf een externe computer met behulp van de parameter ComputerName ophalen opgeven van een computernaam of IP-adres:You can retrieve the same information from a remote computer by using the ComputerName parameter, specifying a computer name or IP address:

PS> Get-WmiObject -List -ComputerName 192.168.1.29

__SystemClass                           __NAMESPACE
__Provider                              __Win32Provider
__ProviderRegistration                  __ObjectProviderRegistration
...

De aanbieding van de klasse die wordt geretourneerd door de externe computers kan vanwege het specifieke besturingssysteem dat wordt uitgevoerd op de computer en de bepaalde WMI-uitbreidingen toegevoegd door de geïnstalleerde toepassingen verschillen.The class listing returned by remote computers may vary due to the specific operating system the computer is running and the particular WMI extensions added by installed applications.

Notitie

Wanneer u de Get-WmiObject verbinding maken met een externe computer, op de externe computer WMI moet worden uitgevoerd en onder de standaardconfiguratie moet het account dat u gebruikt in de lokale beheerdersgroep op de externe computer.When using Get-WmiObject to connect to a remote computer, the remote computer must be running WMI and, under the default configuration, the account you are using must be in the local administrators group on the remote computer. Het externe systeem hoeft niet te hebben van Windows PowerShell is geïnstalleerd.The remote system does not need to have Windows PowerShell installed. Hiermee kunt u voor het beheren van besturingssystemen die niet worden uitgevoerd in Windows PowerShell, maar hoeven WMI beschikbaar.This allows you to administer operating systems that are not running Windows PowerShell, but do have WMI available.

U kunt zelfs de ComputerName opnemen wanneer u verbinding met het lokale systeem.You can even include the ComputerName when connecting to the local system. U kunt de naam van de lokale computer, het IP-adres (of de loopback-adres 127.0.0.1), of de WMI-stijl '.' als de naam van de computer.You can use the local computer's name, its IP address (or the loopback address 127.0.0.1), or the WMI-style '.' as the computer name. Als u Windows PowerShell op een computer met de naam Admin01 met IP-adres 192.168.1.90 uitvoert, wordt de volgende opdrachten alle geretourneerd met de WMI-klasse aanbieding voor die computer:If you are running Windows PowerShell on a computer named Admin01 with IP address 192.168.1.90, the following commands will all return the WMI class listing for that computer:

Get-WmiObject -List
Get-WmiObject -List -ComputerName .
Get-WmiObject -List -ComputerName Admin01
Get-WmiObject -List -ComputerName 192.168.1.90
Get-WmiObject -List -ComputerName 127.0.0.1
Get-WmiObject -List -ComputerName localhost

Get-WmiObject maakt standaard gebruik van de naamruimte root/cimv2.Get-WmiObject uses the root/cimv2 namespace by default. Als u een andere WMI-naamruimte opgeven wilt, gebruikt u de Namespace parameter en het bijbehorende naamruimtepad opgeven:If you want to specify another WMI namespace, use the Namespace parameter and specify the corresponding namespace path:

PS> Get-WmiObject -List -ComputerName 192.168.1.29 -Namespace root

__SystemClass                           __NAMESPACE
__Provider                              __Win32Provider
...

Met de WMI-klasse DetailsDisplaying WMI Class Details

Als u de naam van een WMI-klasse al weet, kunt u deze informatie onmiddellijk ophalen.If you already know the name of a WMI class, you can use it to get information immediately. Bijvoorbeeld, een van de WMI-klassen die meestal wordt gebruikt voor het ophalen van informatie over een computer is Win32_OperatingSystem.For example, one of the WMI classes commonly used for retrieving information about a computer is Win32_OperatingSystem.

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .

SystemDirectory : C:\WINDOWS\system32
Organization    : Global Network Solutions
BuildNumber     : 2600
RegisteredUser  : Oliver W. Jones
SerialNumber    : 12345-678-9012345-67890
Version         : 5.1.2600

Hoewel we alle parameters worden weergegeven, kan de opdracht kan worden uitgedrukt in een meer beknopte manier.Although we are showing all of the parameters, the command can be expressed in a more succinct way. De ComputerName parameter is niet nodig bij het verbinden met het lokale systeem.The ComputerName parameter is not necessary when connecting to the local system. We blijkt dat het meest algemene geval demonstreren en herinneren van de parameter.We show it to demonstrate the most general case and remind you about the parameter. De Namespace root/cimv2 standaard en kan ook worden weggelaten.The Namespace defaults to root/cimv2, and can be omitted as well. Ten slotte kunt de meeste cmdlets u de naam van de algemene parameters weglaten.Finally, most cmdlets allow you to omit the name of common parameters. Met Get-WmiObject, als er geen naam is opgegeven voor de eerste parameter, Windows PowerShell wordt deze behandeld als de klasse parameter.With Get-WmiObject, if no name is specified for the first parameter, Windows PowerShell treats it as the Class parameter. Dit betekent dat de laatste opdracht kan worden uitgegeven door te typen:This means the last command could have been issued by typing:

Get-WmiObject Win32_OperatingSystem

De Win32_OperatingSystem klasse heeft nog veel meer eigenschappen dan de hier weergegeven.The Win32_OperatingSystem class has many more properties than those displayed here. De eigenschappen kunt u Get-lid.You can use Get-Member to see all the properties. De eigenschappen van een WMI-klasse zijn automatisch beschikbaar, zoals andere eigenschappen van het object:The properties of a WMI class are automatically available like other object properties:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Get-Member -MemberType Property

   TypeName: System.Management.ManagementObject#root\cimv2\Win32_OperatingSyste
m

Name                                      MemberType Definition
----                                      ---------- ----------
__CLASS                                   Property   System.String __CLASS {...
...
BootDevice                                Property   System.String BootDevic...
BuildNumber                               Property   System.String BuildNumb...
...

Eigenschappen van de niet-standaard met indeling Cmdlets weer te gevenDisplaying Non-Default Properties with Format Cmdlets

Als u wilt dat de gegevens in de Win32_OperatingSystem klasse is niet standaard weergegeven, kunt u deze weergeven doen met behulp van de indeling cmdlets.If you want information contained in the Win32_OperatingSystem class that is not displayed by default, you can display it by using the Format cmdlets. Bijvoorbeeld, als u gegevens beschikbaar geheugen weergeven wilt, typt u:For example, if you want to display available memory data, type:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Format-Table -Property TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles

TotalVirtualMemorySize TotalVisibleMemory FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------    ------------------ -==--------------------- ---------------
               2097024          785904                305808           2056724                1558232

Notitie

Jokertekens werken met namen van eigenschappen in Format-Table, zodat de laatste pipeline-element kan worden teruggebracht naar Format-Table -Property Total,FreeWildcards work with property names in Format-Table, so the final pipeline element can be reduced to Format-Table -Property Total,Free

De geheugengegevens is mogelijk beter leesbare indeling als een lijst door te typen:The memory data might be more readable if you format it as a list by typing:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Format-List TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles

TotalVirtualMemorySize : 2097024
TotalVisibleMemorySize : 785904
FreePhysicalMemory     : 301876
FreeVirtualMemory      : 2056724
FreeSpaceInPagingFiles : 1556644