Les tâches WMI pour la gestion du bureau peuvent exercer un contrôle et obtenir des données à partir d’un bureau à distance ou d’un ordinateur local. Par exemple, vous pouvez déterminer si l’économiseur d’écran sur un ordinateur local nécessite un mot de passe. WMI vous permet également d’arrêter un ordinateur distant. Pour obtenir d’autres exemples, consultez TechNet ScriptCenter à l’adresse https://www.microsoft.com/technet.
Les exemples de script présentés dans cette rubrique obtiennent les données uniquement à partir de l’ordinateur local. Pour plus d’informations sur l’utilisation du script afin d’obtenir des données provenant d’ordinateurs distants, consultez Connexion à WMI sur un ordinateur distant.
La procédure suivante explique comment exécuter un script.
Pour exécuter un script
Copiez le code, puis enregistrez-le dans un fichier avec l’extension .vbs, par exemple nomfichier.vbs. Vérifiez que votre éditeur de texte n’ajoute pas d’extension .txt au fichier.
Ouvrez une fenêtre d’invite de commandes, puis accédez au répertoire où vous avez enregistré le fichier.
Tapez cscript nomfichier.vbs à l’invite de commandes.
Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez la commande à partir d’une invite de commandes avec élévation de privilèges. Certains journaux des événements, par exemple le journal des événements de sécurité, peuvent être protégés par la fonctionnalité UAC (contrôle de compte d’utilisateur).
Notes
Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Dans la mesure où les scripts WMI peuvent produire de grandes quantités de données en sortie, vous pouvez être amené à rediriger la sortie vers un fichier. Tapez cscript nomfichier.vbs > fichiersortie.txtà l’invite de commandes pour rediriger la sortie du scriptnomfichier.vbs vers fichiersortie.txt.
Le tableau suivant liste des exemples de script qui peuvent être utilisés pour obtenir divers types de données à partir de l’ordinateur local.
Comment puis-je...
Classes ou méthodes WMI
... déterminer si un ordinateur distant a démarré en mode sans échec avec l’état de réseau ?
Utilisez la classe Win32_ComputerSystem et vérifiez la valeur de la propriété PrimaryOwnerName.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings
Wscript.Echo "System Name: " & objComputer.Name
Wscript.Echo "Registered owner: " & objComputer.PrimaryOwnerName
Next
... déterminer si un écran de veille d’ordinateur nécessite un mot de passe ?
Utilisez la classe Win32_Desktop et vérifiez la valeur de la propriété ScreenSaverSecure.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Desktop")
For Each objItem in colItems
Wscript.Echo "Screen Saver Secure: " & objItem.ScreenSaverSecure
Next
... vérifier qu’un écran d’ordinateur a été défini pour 800 pixels par 600 pixels ?
Utilisez la classe Win32_DesktopMonitor et vérifiez les valeurs des propriétés ScreenHeight et ScreenWidth.
VB
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
For Each objItem in colItems
Wscript.Echo "Screen Height: " & objItem.ScreenHeight
Wscript.Echo "Screen Width: " & objItem.ScreenWidth
Next
PowerShell
<# Get desktop information #>
$computer = "." $desktops = Get-WmiObject -Class Win32_DesktopMonitor $hostname = hostname
<# Afficher les détails du bureau #> « Il y a {0} bureaux {1} comme suit : » -f $desktops. Count, $hostname « » $i=1 # nombre de bureaux sur ce système
... déterminer depuis combien de temps un ordinateur est en cours d’exécution ?
Utilisez la classe Win32_OperatingSystem et la propriété LastBootUpTime. Soustrayez cette valeur à l’heure actuelle pour obtenir la durée de fonctionnement du système.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
dtmBootup = objOS.LastBootUpTime
dtmLastBootUpTime = WMIDateStringToDate(dtmBootup)
dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
Wscript.Echo dtmSystemUptime
Next
Function WMIDateStringToDate(dtmBootup)
WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) & " " & Mid (dtmBootup, 9, 2) & ":" & _
Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, 13, 2))
End Function
PowerShell
fonction WMIDateStringToDate($Bootup) { [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) }
<# Main script #> $Computer = "." # adjust as needed $computers = Get-WMIObject -class Win32_OperatingSystem -computer $computer
La classe Win32_OperatingSystem dispose d’une méthode Win32Shutdown. Vous devez inclure le privilège RemoteShutdown lors de la connexion à WMI. Pour plus d’informations, consultez Exécution d’opérations privilégiées. Contrairement à la méthode Shutdown sur Win32_OperatingSystem, la méthode Win32Shutdown vous permet de définir des indicateurs pour contrôler le comportement d’arrêt.
VB
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Shutdown(1)
Next