Compartir a través de


Método PauseService de la clase Win32_Service (proveedores WMI CIMWin32)

El método de clase WMIPauseService intenta colocar el servicio en estado en pausa.

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.

Sintaxis

uint32 PauseService();

Parámetros

Este método no tiene parámetros.

Valor devuelto

Devuelve uno de los valores enumerados en la lista siguiente o cualquier otro valor para indicar un error. Para obtener códigos de error adicionales, consulte Constantes de error WMI o WbemErrorEnum. Para obtener valores HRESULT generales, consulte Códigos de error del sistema.

0

Se aceptó la solicitud.

1

No se admite la solicitud.

2

El usuario no tenía el acceso necesario.

3

No se puede detener el servicio porque otros servicios que se están ejecutando dependen de él.

4

El código de control solicitado no es válido o no es aceptable para el servicio.

5

El código de control solicitado no se puede enviar al servicio porque el estado del servicio (Win32_BaseService. Propiedad de estado ) es igual a 0, 1 o 2.

6

El servicio no se ha iniciado.

7

El servicio no respondió a tiempo a la solicitud de inicio.

8

Error desconocido al iniciar el servicio.

9

No se encontró la ruta de acceso del directorio al archivo ejecutable del servicio.

10

El servicio ya se está ejecutando.

11

La base de datos para agregar un nuevo servicio está bloqueada.

12

Una dependencia en la que se basa este servicio se ha quitado del sistema.

13

El servicio no pudo encontrar el servicio necesario de un servicio dependiente.

14

El servicio se ha deshabilitado del sistema.

15

El servicio no tiene la autenticación correcta para ejecutarse en el sistema.

16

Este servicio se está quitando del sistema.

17

El servicio no tiene ningún subproceso de ejecución.

18

El servicio tiene dependencias circulares cuando se inicia.

19

Un servicio se ejecuta con el mismo nombre.

20

El nombre del servicio tiene caracteres no válidos.

21

Se han pasado parámetros no válidos al servicio.

22

La cuenta con la que se ejecuta este servicio no es válida o carece de los permisos para ejecutar el servicio.

23

El servicio existe en la base de datos de servicios disponibles del sistema.

24

El servicio se encuentra en pausa actualmente en el sistema.

Comentarios

Después de determinar qué servicios se pueden detener o pausar, puede usar los métodos StopService y PauseService para detener y pausar los servicios. La decisión de detener un servicio en lugar de pausarlo, o viceversa, depende de varios factores, incluidos los siguientes:

  • ¿Es capaz de pausar el servicio? Si no es así, la única opción es detener el servicio.
  • ¿Necesita seguir controlando las solicitudes de cliente para cualquier persona que ya esté conectada al servicio? Si es así, pausar un servicio normalmente permite controlar los clientes existentes a la vez que se deniega el acceso a los nuevos clientes. Por el contrario, al detener un servicio, todos los clientes se desconectan inmediatamente.
  • ¿Necesita volver a configurar un servicio y hacer que los cambios surtan efecto inmediatamente? Aunque las propiedades del servicio se pueden cambiar mientras un servicio está en pausa, la mayoría de ellas no surten efecto hasta que el servicio se detenga y reinicie realmente.

El código de scripting necesario para detener un servicio es casi idéntico al código necesario para pausar el servicio.

Ejemplos

El ejemplo Pausar servicios que se ejecutan en una cuenta específica de VBScript pausa todos los servicios que se ejecutan en la cuenta de servicio hipotética "Netsvc".

En el ejemplo de código vbScript siguiente se muestra cómo pausar un servicio específico a partir de instancias de Win32_Service.

Nota

El servicio debe admitir la pausa y estar ejecutándose ya.

Set ServiceSet = GetObject("winmgmts:").ExecQuery("select * from Win32_Service where Name='Schedule'")

for each Service in ServiceSet
 SupportsPause = Service.AcceptPause
 if SupportsPause = true then
  RetVal = Service.PauseService()
  if RetVal = 0 then 
   WScript.Echo "Service paused"   
  else
   if RetVal = 1 then 
    WScript.Echo "Pause not supported" 
   else WScript.Echo "An error occurred:" & RetVal
   End If
  End If
 else
  WScript.Echo "Service does not support pause"
 end if
next

En el ejemplo de código Perl siguiente se muestra cómo pausar un servicio específico a partir de instancias de Win32_Service.

Nota

El servicio debe admitir la pausa y estar ejecutándose ya.

use strict;
use Win32::OLE;

my ($ServiceSet, $SupportsPause, $RetVal);  
eval {$ServiceSet = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\Root\\CIMv2")->
 ExecQuery("SELECT * FROM Win32_Service WHERE Name='Schedule'"); };
unless($@)
{
 foreach my $ServiceInst (in $ServiceSet)
 {
  if ($ServiceInst->{AcceptPause})
  {
   $RetVal = $ServiceInst->PauseService();
   if ($RetVal == 0)
   {
    print "\nService paused\n";
   }
   else
   {
    if ($RetVal == 1)
    {
     print "\nPause not supported\n" ;
    }
    else 
    {
     print "\nAn error occurred:", $RetVal, "\n";
    }
   } 
  }
  else
  {
   print "\nService does not support pause\n";
  }
 }
}
else
{
 print STDERR "\n", Win32::OLE->LastError, "\n";
}

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Espacio de nombres
Root\CIMv2
MOF
CIMWin32.mof
Archivo DLL
CIMWin32.dll

Consulte también

Clases de sistema operativo

Win32_Service

Tareas de WMI: servicios

StopService