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 distantes dans WMI sont affectées par le pare-feu Windows, les paramètres DCOM et le contrôle de compte d’utilisateur (UAC). pour plus d’informations sur la configuration des connexions à distance, consultez connexion à WMI à distance à partir de Windows Vista.

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

exemples de 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 jeux d’informations d’identification et comment accéder aux informations WMI.

l’exemple de Windows PowerShell suivant illustre la définition du 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) 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é « emprunt d’identité ». Par défaut, le niveau d’emprunt d’identité a la valeur 3 (emprunter l’identité).

L’exemple répertorie toutes les instances de la classe de _ processus Win32 qui s’exécutent sur l’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, ce qui correspond à l’emprunt d’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é affecté à la variable $Computer. L’utilisateur se connecte à un ordinateur distant en utilisant des 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. Elle est équivalente au trait de soulignement ( _ ) dans VBScript.

l’exemple de 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 appareils Plug-and-Play (instances de _ PnPEntity Win32) 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 de Windows PowerShell précédent, vous devez être administrateur sur les ordinateurs distants. En outre, en rapport avec l’exemple précédent, notez les points suivants :

  • Les noms d’ordinateur dans le tableau doivent être placés entre guillemets, car il s’agit de chaînes.
  • Les objets retournés par la prise en main sont assignés à la variable $ColItems.
  • L’opérateur [ ] de plage limite la liste des appareils Plug-and-Play à 48 instances. Pour plus d’informations, consultez à propos des _ opérateurs.
  • « | » Est le caractère de pipeline. L’objet retourné par ColItems est envoyé à l’applet de commande format-list .

l’exemple de Windows PowerShell suivant vous permet de vous connecter à un ordinateur distant situé sur un autre domaine. Cet exemple affiche également les noms des processus pour les instances de _ processus Win32 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 de 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 situé sur un autre domaine et spécifie des paramètres régionaux préférés. La commande de récupération des informations d’identification demande les informations d’identification de l’utilisateur et assigne les informations d’identification à un objet. L’exemple répertorie également les noms des instances de la classe de _ processus Win32 qui s’exécutent sur l’ordinateur.

Connexion à WMI sur un ordinateur distant