Connexion à WMI à distance avec PowerShell

Windows PowerShell fournit un mécanisme simple pour se connecter à Windows Management Instrumentation (WMI) sur un ordinateur distant. Les connexions à distance dans WMI sont affectées par le Pare-feu Windows, les paramètres DCOM et le contrôle de compte d’utilisateur. Pour plus d’informations sur la configuration de connexions à distance, consultez Connexion à WMI à distance avec Windows Vista.

Les exemples de cette rubrique sont basés sur les VBScripts de Connexion à WMI sur un ordinateur distant. Tous les exemples de cette rubrique utilisent l’applet de commande Get-WmiObject. Pour plus d’informations, consultez Get-WmiObject.

Exemples Windows PowerShell

Lors de la création d’une connexion à un ordinateur distant, un utilisateur peut spécifier les informations de connexion, telles que le nom de l’ordinateur distant, les informations d’identification et le niveau d’authentification de la connexion. Les exemples suivants montrent comment se connecter à un ordinateur distant à l’aide de différents ensembles d’informations d’identification et comment accéder aux informations WMI.

L’exemple Windows PowerShell suivant montre comment définir le niveau d’emprunt d’identité :


Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B

Dans l’exemple précédent, l’utilisateur se connecte à un ordinateur distant en utilisant les mêmes informations d’identification (domaine et nom d’utilisateur) que celles avec lesquelles il s’est connecté. L’utilisateur a également demandé à utiliser l’emprunt d’identité. Contrairement à l’exemple VBScript d’origine, une chaîne de moniker n’est pas nécessaire, car le niveau d’emprunt d’identité est défini par la propriété « Impersonation ». Par défaut, le niveau d’emprunt d’identité est défini sur 3 (Emprunt d’identité).

L’exemple répertorie toutes les instances de la classe Win32_Process qui s’exécutent sur un ordinateur distant.

Notes

Vous devez spécifier l’espace de noms WMI auquel se connecter sur l’ordinateur distant, car il est possible que l’espace de noms par défaut ne soit pas le même sur des ordinateurs différents.

 

L’exemple de Windows PowerShell suivant montre comment se connecter à un ordinateur distant avec des informations d’identification différentes et définir le niveau d’emprunt d’identité sur 3, qui est Emprunter l’identité :


$Computer = "atl-dc-01"

Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer

Dans l’exemple précédent, le nom de l’ordinateur a été attribué à la variable $Computer. L’utilisateur se connecte à un ordinateur distant à l’aide d’informations d’identification spécifiques (domaine et nom d’utilisateur) et demande l’emprunt d’identité pour le niveau d’authentification.

Notes

Le caractère d’accent grave (') est utilisé pour indiquer un saut de ligne. Il équivaut au caractère de soulignement (_) dans VBScript.

 

L’exemple Windows PowerShell suivant se connecte à un groupe d’ordinateurs distants dans le même domaine en créant un tableau de noms d’ordinateurs distants, puis en affichant les noms des périphériques Plug-and-Play (instances de Win32_PnPEntity) sur chaque ordinateur :

$ArrComputers = "Computer1", "Computer2", "Computer3"
foreach ($Computer in $ArrComputers) 
{
write-host ""
write-host "===================================="
write-host "Computer: $Computer"
write-host "===================================="

write-host "-----------------------------------"
write-host "Win32_PnPEntity instance"
write-host "-----------------------------------"

$ColItems = Get-WmiObject -Class Win32_PnPEntity -Namespace "root\cimv2" -Computer $Computer
$ColItems[0..47] | Format-List Name, Status
}

Notes

Pour exécuter le script Windows PowerShell précédent, vous devez être administrateur sur les ordinateurs distants. En outre, en ce qui concerne l’exemple précédent, notez les points suivants :

 

  • Les noms d’ordinateurs du tableau doivent être placés entre guillemets, car il s’agit de chaînes.
  • Les objets retournés par Get-WmiObject sont attribués à la variable $ColItems.
  • L’opérateur de plage [] a limité la liste des périphériques Plug-and-Play à 48 instances. Pour plus d’informations, consultez About_Operators.
  • « | » est le caractère de pipeline. L’objet retourné par ColItems est envoyé à l’applet de commande Format-List.

L’exemple Windows PowerShell suivant vous permet de vous connecter à un ordinateur distant sur un autre domaine. Cet exemple affiche également les noms de processus pour les instances de Win32_Process sur l’ordinateur distant.

$Computer = "FullComputerName" 
$Domain = "DOMAIN"
$Credential = Get-Credential
$ColItems = Get-WmiObject -Class Win32_Process -Authority "ntlmdomain:$Domain" `
-Credential $Credential -Locale "MS_409" -Namespace "root\cimv2"  -ComputerName $Computer

foreach ($ObjItem in $colItems) 
{
write-host "Process Name:" $ObjItem.name
}

Notes

Pour exécuter le script Windows PowerShell précédent, vous devez être administrateur sur l’ordinateur distant.

 

Dans l’exemple précédent, l’utilisateur se connecte à un ordinateur distant sur un autre domaine et spécifie des paramètres régionaux favoris. La commande Get-Credential demande les informations d’identification de l’utilisateur et attribue les informations d’identification à un objet. L’exemple répertorie également les noms des instances de la classe Win32_Process qui s’exécutent sur l’ordinateur.

Connexion à WMI sur un ordinateur distant