Método Win32Shutdown de la clase Win32_OperatingSystem
El método de clase WMIWin32Shutdown proporciona el conjunto completo de opciones de apagado compatibles con los sistemas operativos Win32. Entre ellos se incluyen logoff, shutdown, reboot y forzando un logoff, shutdown o reboot.
En este tema se usa la sintaxis de Managed Object Format (MOF). Para obtener más información sobre el uso de este método, vea Llamar a un método.
uint32 Win32Shutdown(
[in] sint32 Flags,
[in] sint32 Reserved =
);
-
Marcas [in]
-
Conjunto de marcas con mapa de bits para apagar el equipo. Para forzar un comando, agregue la marca Force (4) al valor del comando. El uso de Force junto con Apagar o Reiniciar en un equipo remoto cierra inmediatamente todo (incluido WMI, COM, etc.), o reinicia el equipo remoto. Esto da como resultado un valor devuelto indeterminado.
-
0 (0x0)
-
Cerrar sesión : registra al usuario fuera del equipo. Cerrar sesión detiene todos los procesos asociados al contexto de seguridad del proceso que llamó a la función exit, registra al usuario actual fuera del sistema y muestra el cuadro de diálogo de inicio de sesión.
-
4 (0x4)
-
Cierre de sesión forzado (0 + 4): registra al usuario fuera del equipo inmediatamente y no notifica a las aplicaciones que finaliza la sesión de inicio de sesión. Esto puede dar lugar a una pérdida de datos.
-
1 (0x1)
-
Apagado: apaga el equipo en un punto donde es seguro apagar la alimentación. (Todos los búferes de archivos se vacían en el disco y se detienen todos los procesos en ejecución). Los usuarios ven el mensaje,
It is now safe to turn off your computer.
Durante el apagado, el sistema envía un mensaje a cada aplicación en ejecución. Las aplicaciones realizan cualquier limpieza al procesar el mensaje y devuelven True para indicar que se pueden finalizar.
-
5 (0x5)
-
Apagado forzado (1 + 4): apaga el equipo en un punto donde es seguro apagar la alimentación. (Todos los búferes de archivos se vacían en el disco y se detienen todos los procesos en ejecución). Los usuarios ven el mensaje,
It is now safe to turn off your computer.
Cuando se usa el enfoque de apagado forzado, todos los servicios, incluido WMI, se apagan inmediatamente. Por este motivo, no podrá recibir un valor devuelto si ejecuta el script en un equipo remoto.
-
2 (0x2)
-
Reiniciar: apaga y, a continuación, reinicia el equipo.
-
6 (0x6)
-
Reinicio forzado (2 + 4): apaga y luego reinicia el equipo.
Cuando se usa el enfoque de reinicio forzado, todos los servicios, incluido WMI, se apagan inmediatamente. Por este motivo, no podrá recibir un valor devuelto si ejecuta el script en un equipo remoto.
-
8 (0x8)
-
Apagar : apaga el equipo y apaga la alimentación (si es compatible con el equipo en cuestión).
-
12 (0xC)
-
Apagado forzado (8 + 4): apaga el equipo y apaga la alimentación (si es compatible con el equipo en cuestión).
Cuando se usa el enfoque de apagado forzado, todos los servicios, incluido WMI, se apagan inmediatamente. Por este motivo, no podrá recibir un valor devuelto si ejecuta el script en un equipo remoto.
Reservado [in]
Un medio para extender Win32Shutdown. Actualmente, se omite el parámetro Reserved .
Devuelve cero (0) para indicar que se ha realizado correctamente. Cualquier otro número indica que hubo un error. Para obtener códigos de error, consulte Constantes de error WMI o WbemErrorEnum. Para obtener valores HRESULT generales, consulte Códigos de error del sistema.
-
Correcto (0)
-
Otros (1–4294967295)
Para una administración más eficaz de los equipos de una organización, los administradores necesitan la capacidad de apagar o reiniciar de forma remota un equipo, o para cerrar sesión de forma remota a un usuario. La capacidad de llevar a cabo estas tareas permite a los administradores instalar software, volver a configurar la configuración del equipo, quitar equipos de la red y realizar otras tareas sin tener que apagar o reiniciar manualmente cada equipo.
Por ejemplo, para realizar una actualización de red, es posible que tenga que apagar todos los equipos que se ejecutan en un segmento de red determinado. Para forzar una actualización de directiva de grupo, debe cerrar la sesión de los usuarios de sus equipos. Si un virus informático está presente en cualquier parte de la organización, es posible que desee apagar tantos equipos como sea posible, antes de que el virus tenga la oportunidad de propagarse. La capacidad de apagar y reiniciar equipos y cerrar la sesión de los usuarios mediante programación en lugar de manualmente puede ser un enorme ahorro de tiempo.
El proceso de llamada debe tener el privilegio SE_SHUTDOWN_NAME .
El método Win32ShutdownTracker proporciona el mismo conjunto de opciones de apagado admitidas por el método Win32Shutdown en Win32_OperatingSystem , pero también permite especificar comentarios, un motivo para el apagado o un tiempo de espera.
El método Win32Shutdown no tiene un parámetro para bloquear una estación de trabajo, dejando al usuario conectado. Sin embargo, las estaciones de trabajo se pueden bloquear desde la línea de comandos mediante el siguiente comando:
% windir %\System32\rundll32.exe user32.dll,LockWorkStation
El ejemplo cerrar sesión, reiniciar o apagar varios equipos VBScript en la Galería de TechNet usa Win32Shutdown para cerrar, apagar, reiniciar o apagar (según la selección) los equipos enumerados en la matriz Servidor.
El ComputerManagement.ps1 ejemplo de PowerShell en la Galería de TechNet incluye un método que llama a Win32Shutdown en un equipo remoto.
En el siguiente ejemplo de PowerShell se usa el método Win32Shutdown para apagar el equipo especificado.
$computername= "."
$win32OS = get-wmiobject win32_operatingsystem -computername $computername
$win32OS.psbase.Scope.Options.EnablePrivileges = $true
$win32OS.win32shutdown(8)
En el siguiente ejemplo de código de PowerShell se usa el cmdlet EnableAllPrivileges del cmdlet get-wmiobject para lograr los privilegios adecuados.
$win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges
$win32OS.win32shutdown(8)
El siguiente VB.NET código de ejemplo usa el método Shutdown para reiniciar o cerrar la sesión de un sistema.
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
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows Vista |
Servidor mínimo compatible |
Windows Server 2008 |
Espacio de nombres |
Root\CIMV2 |
MOF |
|
Archivo DLL |
|