Query's uitvoeren op opslagplaatsklassen van externe computers met behulp van CIMSession-objecten

Voltooid

Een CIM-sessie (Common Information Model) is een permanent configuratieobject dat wordt gebruikt bij het maken van een verbinding met een externe computer. De verbinding maakt standaard gebruik van WS-MAN, maar u kunt het DCOM-protocol opgeven. Nadat een sessie is gemaakt, kunt u deze gebruiken om meerdere query's voor die computer te verwerken. Dit vereenvoudigt de connectiviteit omdat alle configuratieopties zijn opgenomen in de sessie. Met een CIM-sessie kunt u ook connectiviteitsopties opgeven die niet beschikbaar zijn voor een ad-hocverbinding.

Sessieobjecten maken

Wanneer u een sessie maakt, moet u deze opslaan in een variabele om er later naar te verwijzen. De basissyntaxis voor het maken van een sessie en het opslaan ervan in een variabele is:

$s = New-CimSession -ComputerName LON-DC1

U kunt meerdere sessies tegelijk maken:

$sessions = New-CimSession -ComputerName LON-CL1,LON-DC1

Wanneer u een sessie maakt, maakt PowerShell de verbinding niet onmiddellijk tot stand. Wanneer een cmdlet gebruikmaakt van de CIM-sessie, maakt PowerShell verbinding met de opgegeven computer en wordt de verbinding beƫindigd wanneer de cmdlet is voltooid.

Notitie

In sommige gevallen kan het nuttig zijn om externe communicatie van PowerShell te gebruiken in plaats van CIM-sessies voor externe connectiviteit. Externe communicatie via PowerShell opent een verbinding met de externe computer en houdt deze open totdat deze expliciet is gesloten. Als u meerdere query's uitvoert op een computer, kan dit de prestaties verbeteren.

Sessies gebruiken

Nadat u de sessie in een variabele hebt opgeslagen, verwijst u ernaar met CIM-cmdlets met behulp van de parameter -CimSession . In het volgende voorbeeld wordt een variabele gebruikt die meerdere sessies bevat:

Get-CimInstance -CimSession $sessions -ClassName Win32_OperatingSystem

Houd er rekening mee dat sessies zijn ontworpen om het beste te werken in een domeinomgeving, tussen computers in hetzelfde domein of in vertrouwde domeinen. Als u een sessie moet maken naar een niet-domeincomputer of naar een computer in een niet-vertrouwd domein, moet u aanvullende configuratie uitvoeren. U vindt meer informatie over deze configuratie in module 8, 'Beheer hetisteren van externe computers met Windows PowerShell'.

Notitie

De Help-informatie voor sommige cmdlets, zoals Get-SmbShare , geeft aan dat ze een parameter -CimSession ondersteunen. Deze opdrachten gebruiken CIM intern. Wanneer u deze opdrachten gebruikt om een query uit te voeren op een externe computer, kunt u een CIM-sessieobject opgeven voor de parameter -CimSession om verbinding te maken met behulp van een bestaande sessie.

Sessieopties configureren

Met een sessieoptieobject kunt u veel instellingen voor een sessie opgeven. Wanneer u een nieuwe sessie maakt, geeft u het sessieoptieobject op om de sessie te configureren. In het volgende voorbeeld wordt een sessie gemaakt met behulp van DCOM in plaats van WS-MAN:

$opt = New-CimSessionOption -Protocol Dcom
$DcomSession = New-CimSession -ComputerName LON-DC1 -SessionOption $opt
Get-CimInstance -ClassName Win32_BIOS -CimSession $DcomSession

Met de eerste regel in de voorgaande code wordt een sessieoptieobject gemaakt dat aangeeft dat het DCOM-protocol moet worden gebruikt voor connectiviteit. Met de tweede regel maakt u een nieuwe sessie met behulp van dat sessieoptieobject en slaat u deze op in een variabele. De laatste regel maakt gebruik van de sessie om een query uit te voeren op de externe computer die in de sessie is gedefinieerd en de gevraagde informatie te retourneren.

Sessies verwijderen

Nadat u een sessie hebt gemaakt, blijft deze in het geheugen en beschikbaar voor gebruik totdat het exemplaar van PowerShell is gesloten. U kunt sessies handmatig verwijderen met behulp van de cmdlet Remove-CimSession . In het volgende voorbeeld worden een of meer sessies in een variabele verwijderd:

$sessions | Remove-CimSession

Als u de sessies voor een specifieke externe computer wilt verwijderen, kunt u een query uitvoeren op de sessies voor die computer en deze vervolgens verwijderen, zoals in het volgende voorbeeld wordt weergegeven:

Get-CimSession -ComputerName LON-DC1 | Remove-CimSession

Als u alle sessies wilt verwijderen, voert u de volgende opdracht uit:

Get-CimSession | Remove-CimSession