Naamruimten en klassen van lokale opslagplaatsen weergeven met behulp van CIM en WMI

Voltooid

Naamruimten organiseren de objectklassen die u kunt opvragen met Common Information Model (CIM) en Windows Management Instrumentation (WMI). U kunt naamruimten vermelden om mogelijk nuttige objectklassen te identificeren.

U kunt de cmdlet Get-WmiObject gebruiken om alle naamruimten op de lokale of een externe computer weer te geven. Voer de volgende opdracht uit om de naamruimten op de lokale computer weer te geven:

Get-WmiObject -Namespace root -List -Recurse | Select -Unique __NAMESPACE

Notitie

Als er fouten optreden bij het uitvoeren van de vorige opdracht, controleert u of u een Windows PowerShell-prompt met verhoogde bevoegdheid gebruikt. Sommige naamruimten hebben beveiligingsvereisten waarmee alleen beheerders toegang hebben tot deze.

U kunt de Cmdlet Get-CimInstance gebruiken om de naamruimten in een specifieke naamruimte weer te geven, maar er wordt geen -Recurse-parameter opgegeven om alle beschikbare naamruimten in één opdracht weer te geven. De CIM-cmdlets ondersteunen echter tabvoltooiing voor de parameter -Namespace , vergelijkbaar met hoe u tabvoltooiing kunt gebruiken bij het invoeren van een bestandssysteempad. Het gebruik van tabvoltooiing voor de naamruimte is een browsemethode die u kunt gebruiken om de beschikbare naamruimten te verkennen.

In deze module gebruikt u voornamelijk de root\CIMv2-naamruimte , die alle klassen bevat die betrekking hebben op het Windows-besturingssysteem en de hardware van uw computer. root\CIMv2 is de standaardnaamruimte. Daarom hoeft u de naamruimte niet op te geven bij het uitvoeren van query's op exemplaren ervan, tenzij anders vermeld.

Klassen vermelden

Meestal probeert u een specifieke taak uit te voeren wanneer u Common Information Model (CIM) en Windows Management Instrumentation (WMI) gebruikt. Als u wilt bepalen hoe u deze taak uitvoert, voert u doorgaans een internetzoekopdracht uit om te bepalen of iemand voorbeeldcode heeft opgegeven die een vergelijkbare taak uitvoert. Vervolgens kunt u die code voor uw doeleinden wijzigen en de CIM- of WMI-klassen identificeren die ze gebruiken. Wanneer u geen nuttige voorbeeldcode vindt, kunt u door de beschikbare klassen bladeren om te controleren of er iets geschikt is.

Als u de beschikbare klassen wilt verkennen met behulp van CIM en WMI, kunt u de klassen weergeven die beschikbaar zijn in een naamruimte. Als u bijvoorbeeld alle klassen in de root\CIMv2 naamruimte wilt weergeven, voert u een van de volgende opdrachten uit:

Get-WmiObject -Namespace root\CIMv2 -List
Get-CimClass -Namespace root\CIMv2

Windows PowerShell vermeldt geen klassen in een bepaalde volgorde. U kunt de uitvoer van uw query's alfabetisch sorteren om klassen gemakkelijker te vinden. Als u bijvoorbeeld een klasse wilt die een proces vertegenwoordigt, maar de naam van de klasse niet kent, kunt u snel verwijzen naar de sectie 'P' van een gesorteerde lijst en beginnen met het zoeken naar het woordproces. Voer een van de volgende opdrachten uit om een alfabetische lijst met klassen te produceren in de hoofd-\CIMv2-naamruimte :

Get-WmiObject -Namespace root\cimv2 -List | Sort Name
Get-CimClass -Namespace root\CIMv2 | Sort CimClassName

Notitie

In de naamruimte root\CIMv2 ziet u enkele klassenamen die beginnen met Win32_ en andere die beginnen met CIM_. Deze naamruimte is de enige die deze voorvoegsels gebruikt. Klassen die beginnen met CIM_ zijn doorgaans abstracte klassen. Klassen die beginnen met Win32_ zijn doorgaans specifiekere versies van de abstracte klassen en bevatten informatie die specifiek is voor het Windows-besturingssysteem.

Veel beheerders vinden dat de opslagplaats moeilijk te gebruiken is. Het vinden van de klasse die u nodig hebt om een bepaalde taak uit te voeren, is een gokspel. U moet raden wat de naam van de klas kan zijn en controleer vervolgens de klassenlijst om te achterhalen of u juist bent. Vervolgens moet u een query uitvoeren op de klasse om te bepalen of deze de informatie bevat die u nodig hebt. Omdat veel klassen buiten de hoofd-\CIMv2-naamruimte niet goed zijn gedocumenteerd, is dit uw beste benadering.

Er bestaat geen centrale map met opslagplaatsklassen. De opslagplaats bevat geen zoeksysteem. U kunt Windows PowerShell gebruiken om een eenvoudige trefwoordenzoekopdracht uit te voeren voor namen van opslagplaatsklassen. Als u bijvoorbeeld alle klassen in de root\CIMv2 naamruimte met netwerk in de klassenaam wilt zoeken, gebruikt u de volgende opdracht:

Get-CimClass *network* | Sort CimClassName

Deze techniek biedt echter niet de mogelijkheid om beschrijvingen van klassen te zoeken omdat deze informatie niet is opgeslagen in de opslagplaats. Een zoekmachine op internet biedt een beter alternatief voor het zoeken naar mogelijke klassenamen.

Notitie

Mogelijk ziet u enkele klassenamen die beginnen met twee onderstrepingstekens (__). Dit zijn systeemklassen die WMI en CIM intern gebruiken.

Notitie

Er zijn verschillende gratis grafische hulpprogramma's die u kunt gebruiken om door WMI- en CIM-klassen te bladeren. Als u deze hulpprogramma's wilt vinden, gebruikt u een zoekmachine om te zoeken naar WMI Explorer of CIM Explorer.

Er is één specifiek WMI-klasseobject dat problemen kan veroorzaken voor systeembeheerders. Dit is de Win32_Product klasse. U kunt deze klasse gebruiken om een query uit te voeren op geïnstalleerde software, maar houd er rekening mee dat het retourneren van de resultaten lang duurt en negatieve gevolgen heeft voor de prestaties. Wanneer u een query uitvoert op deze klasse, voert de provider een Windows Installer-herconfiguratie uit op elk MSI-pakket op het systeem terwijl de query wordt uitgevoerd. Microsoft raadt aan de Win32reg_AddRemovePrograms-klasse als alternatief te gebruiken, maar deze klasse is alleen beschikbaar op systemen waarop de Microsoft Endpoint Configuration Manager-client is geïnstalleerd.

Aanvullende informatie: U vindt de Microsoft Ondersteuning pagina voor dit msi-herconfiguratieprobleem in het gebeurtenislogboekbericht dat aangeeft dat windows Installer alle geïnstalleerde toepassingen opnieuw heeft geconfigureerd.