Método PauseService da classe Win32_Service (Provedores WMI CIMWin32)
O método de classe WMIPauseService tenta colocar o serviço no estado em pausa.
Este tópico usa a sintaxe MOF (Managed Object Format). Para obter mais informações sobre como usar esse método, consulte Chamando um método.
Sintaxe
uint32 PauseService();
Parâmetros
Esse método não tem parâmetros.
Valor retornado
Retorna um dos valores listados na lista a seguir ou qualquer outro valor para indicar um erro. Para obter códigos de erro adicionais, consulte Constantes de erro WMI ou WbemErrorEnum. Para obter valores gerais de HRESULT , consulte Códigos de erro do sistema.
-
0
-
A solicitação foi aceita.
-
1
-
A solicitação não terá suporte.
-
2
-
O usuário não tinha o acesso necessário.
-
3
-
O serviço não pode ser interrompido, porque outros serviços em execução dependem dele.
-
4
-
O código de controle pedido não é válido ou é inaceitável para o serviço.
-
5
-
O código de controle solicitado não pode ser enviado ao serviço porque o estado do serviço (Win32_BaseService. Propriedade State ) é igual a 0, 1 ou 2.
-
6
-
O serviço não foi iniciado.
-
7
-
O serviço não respondeu à solicitação de início em um tempo oportuno.
-
8
-
Falha desconhecida ao iniciar o serviço.
-
9
-
O caminho do diretório para o arquivo executável do serviço não foi encontrado.
-
10
-
O serviço já está em execução.
-
11
-
O banco de dados para adicionar um serviço novo está bloqueado.
-
12
-
Uma dependência da qual esse serviço depende foi removida do sistema.
-
13
-
O serviço não localizou o serviço necessário em um serviço dependente.
-
14
-
O serviço foi desabilitado do sistema.
-
15
-
O serviço não tem a autenticação correta para ser executado no sistema.
-
16
-
Esse serviço está sendo removido do sistema.
-
17
-
O serviço não tem thread de execução.
-
18
-
O serviço tem dependências circulares quando é iniciado.
-
19
-
Um serviço está em execução com o mesmo nome.
-
20
-
O nome do serviço tem caracteres inválidos.
-
21
-
Parâmetros inválidos foram passados para o serviço.
-
22
-
A conta na qual esse serviço é executado é inválida ou não tem as permissões para executar o serviço.
-
23
-
O serviço existe no banco de dados de serviços disponível no sistema.
-
24
-
O serviço está pausado atualmente no sistema.
Comentários
Depois de determinar quais serviços podem ser interrompidos ou pausados, você pode usar os métodos StopService e PauseService para interromper e pausar os serviços. A decisão de interromper um serviço em vez de pausar, ou vice-versa, depende de vários fatores, incluindo o seguinte:
- O serviço é capaz de ser pausado? Caso contrário, sua única opção é interromper o serviço.
- Você precisa continuar tratando solicitações de cliente para qualquer pessoa já conectada ao serviço? Nesse caso, pausar um serviço normalmente permite que ele manipule clientes existentes enquanto nega o acesso a novos clientes. Por outro lado, quando você interrompe um serviço, todos os clientes são desconectados imediatamente.
- Você precisa reconfigurar um serviço e fazer com que as alterações entrem em vigor imediatamente? Embora as propriedades de serviço possam ser alteradas enquanto um serviço está em pausa, a maioria delas não tem efeito até que o serviço seja realmente interrompido e reiniciado.
O código de script necessário para interromper um serviço é quase idêntico ao código necessário para pausar o serviço.
Exemplos
O exemplo pausar serviços em execução em uma conta específica VBScript pausa todos os serviços em execução na conta de serviço hipotética "Netsvc".
O exemplo de código VBScript a seguir demonstra como pausar um serviço específico de instâncias de Win32_Service.
Observação
O serviço deve dar suporte à pausa e já estar em execução.
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
O exemplo de código Perl a seguir demonstra como pausar um serviço específico de instâncias de Win32_Service.
Observação
O serviço deve dar suporte à pausa e já estar em execução.
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 | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista |
Servidor mínimo com suporte |
Windows Server 2008 |
Namespace |
Root\cimv2 |
MOF |
|
DLL |
|