Méthode Win32Shutdown de la classe Win32_OperatingSystem

La méthode de classe WMIWin32Shutdown fournit l’ensemble complet d’options d’arrêt prises en charge par les systèmes d’exploitation Win32. Il s’agit notamment de la déconnexion, de l’arrêt, du redémarrage et du forçage d’une déconnexion, d’un arrêt ou d’un redémarrage.

Cette rubrique utilise la syntaxe MOF (Managed Object Format). Pour plus d’informations sur l’utilisation de cette méthode, consultez Appel d’une méthode.

Syntaxe

uint32 Win32Shutdown(
  [in] sint32 Flags,
  [in] sint32 Reserved = 
);

Paramètres

Indicateurs [in]

Jeu d’indicateurs bitmap pour arrêter l’ordinateur. Pour forcer une commande, ajoutez l’indicateur Force (4) à la valeur de commande. L’utilisation de Force conjointement avec l’arrêt ou le redémarrage sur un ordinateur distant arrête immédiatement tout (y compris WMI, COM, etc.) ou redémarre l’ordinateur distant. Il en résulte une valeur de retour indéterminée.

0 (0x0)

Déconnexion : déconnecte l’utilisateur de l’ordinateur. La déconnexion arrête tous les processus associés au contexte de sécurité du processus qui a appelé la fonction de sortie, journalise l’utilisateur actuel du système et affiche la boîte de dialogue d’ouverture de session.

4 (0x4)

Déconnexion forcée (0 + 4) : déconnecte immédiatement l’utilisateur de l’ordinateur et n’avertit pas les applications que la session d’ouverture de session se termine. Cela peut entraîner une perte de données.

1 (0x1)

Arrêt : arrête l’ordinateur à un point où il est sûr de désactiver l’alimentation. (Toutes les mémoires tampons de fichiers sont vidées sur le disque et tous les processus en cours d’exécution sont arrêtés.) Les utilisateurs voient le message, It is now safe to turn off your computer.

Pendant l’arrêt, le système envoie un message à chaque application en cours d’exécution. Les applications effectuent un nettoyage pendant le traitement du message et retournent True pour indiquer qu’elles peuvent être terminées.

5 (0x5)

Arrêt forcé (1 + 4) : arrête l’ordinateur à un point où il est sûr de désactiver l’alimentation. (Toutes les mémoires tampons de fichiers sont vidées sur le disque et tous les processus en cours d’exécution sont arrêtés.) Les utilisateurs voient le message, It is now safe to turn off your computer.

Lorsque l’approche d’arrêt forcé est utilisée, tous les services, y compris WMI, sont immédiatement arrêtés. Pour cette raison, vous ne pourrez pas recevoir de valeur de retour si vous exécutez le script sur un ordinateur distant.

2 (0x2)

Redémarrer : arrête, puis redémarre l’ordinateur.

6 (0x6)

Redémarrage forcé (2 + 4) : arrête, puis redémarre l’ordinateur.

Lorsque l’approche de redémarrage forcé est utilisée, tous les services, y compris WMI, sont immédiatement arrêtés. Pour cette raison, vous ne pourrez pas recevoir de valeur de retour si vous exécutez le script sur un ordinateur distant.

8 (0x8)

Mettre hors tension : arrête l’ordinateur et le met hors tension (si l’ordinateur en question est pris en charge).

12 (0xC)

Mise hors tension forcée (8 + 4) : arrête l’ordinateur et désactive l’alimentation (si l’ordinateur en question est pris en charge).

Lorsque l’approche de mise hors tension forcée est utilisée, tous les services, y compris WMI, sont arrêtés immédiatement. Pour cette raison, vous ne pourrez pas recevoir de valeur de retour si vous exécutez le script sur un ordinateur distant.

Réservé [in]

Un moyen d’étendre Win32Shutdown. Actuellement, le paramètre Reserved est ignoré.

Valeur retournée

Retourne zéro (0) pour indiquer la réussite. Tout autre nombre indique une erreur. Pour obtenir des codes d’erreur, consultez Constantes d’erreur WMI ou WbemErrorEnum. Pour connaître les valeurs HRESULT générales, consultez Codes d’erreur système.

Réussite (0)

Autres (1 à 4294967295)

Notes

Pour une gestion plus efficace des ordinateurs d’un organization, les administrateurs ont besoin de la possibilité d’arrêter ou de redémarrer un ordinateur à distance, ou de déconnecter à distance un utilisateur. La possibilité d’effectuer ces tâches permet aux administrateurs d’installer des logiciels, de reconfigurer les paramètres de l’ordinateur, de supprimer des ordinateurs du réseau et d’effectuer d’autres tâches sans avoir à arrêter ou redémarrer manuellement chaque ordinateur.

Par exemple, pour effectuer une mise à niveau réseau, vous devrez peut-être arrêter tous les ordinateurs s’exécutant sur un segment réseau particulier. Pour forcer une mise à niveau stratégie de groupe, vous devez déconnecter les utilisateurs de leurs ordinateurs. Si un virus informatique est présent n’importe où dans votre organization, vous pouvez arrêter autant d’ordinateurs que possible, avant que le virus ait la possibilité de se propager. La possibilité d’arrêter et de redémarrer des ordinateurs et de déconnecter des utilisateurs par programmation plutôt que manuellement peut être un énorme gain de temps.

Le processus appelant doit avoir le privilège SE_SHUTDOWN_NAME .

La méthode Win32ShutdownTracker fournit le même ensemble d’options d’arrêt prises en charge par la méthode Win32Shutdown dans Win32_OperatingSystem , mais elle vous permet également de spécifier des commentaires, un motif d’arrêt ou un délai d’expiration.

La méthode Win32Shutdown n’a pas de paramètre pour verrouiller une station de travail, ce qui laisse l’utilisateur connecté. Toutefois, les stations de travail peuvent être verrouillées à partir de la ligne de commande à l’aide de la commande suivante :

% windir %\System32\rundll32.exe user32.dll,LockWorkStation

Exemples

L’exemple VBScript déconnexion , redémarrage ou arrêt de plusieurs ordinateurs sur TechNet Gallery utilise Win32Shutdown pour déconnecter, arrêter, redémarrer ou mettre hors tension (selon la sélection) les ordinateurs répertoriés dans le tableau de serveurs.

L’exemple PowerShellComputerManagement.ps1sur TechNet Gallery inclut une méthode qui appelle Win32Shutdown sur un ordinateur distant.

L’exemple PowerShell suivant utilise la méthode Win32Shutdown pour arrêter l’ordinateur spécifié.

$computername= "."
$win32OS = get-wmiobject win32_operatingsystem -computername $computername
$win32OS.psbase.Scope.Options.EnablePrivileges = $true
$win32OS.win32shutdown(8)

L’exemple de code PowerShell suivant utilise l’applet de commande EnableAllPrivileges de get-wmiobject pour obtenir les priviliges appropriés.

$win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges
$win32OS.win32shutdown(8)

L’exemple de code VB.NET suivant utilise la méthode Shutdown pour redémarrer ou déconnecter un système.

Dim

testResult AsSingle

Dim WMIServiceObject, ComputerObject AsObject 

'Now get some privileges 

WMIServiceObject = GetObject(
"Winmgmts:{impersonationLevel=impersonate,(Debug,Shutdown)}")
ForEach ComputerObject In WMIServiceObject.InstancesOf("Win32_OperatingSystem") 
    testResult = ComputerObject.Win32Shutdown(2 + 4, 0) 
    'reboot
    'testResult = ComputerObject.Win32Shutdown(0, 0) 'logoff 
    ' testResult = ComputerObject.Win32Shutdown(8 + 4, 0) 'shutdown 

If testResult <> 0 Then 

MsgBox("Sorry, an error has occurred while trying to perform selected operation") 

Else 

'Operation selected in statement above if condition would be carried out 

EndIf 

Next

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
Espace de noms
Racine\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Voir aussi

Classes du système d’exploitation

Win32_OperatingSystem

Win32ShutdownTracker

Tâches WMI : Gestion du bureau

Exécution d’opérations privilégiées à l’aide de VBScript