Método Win32Shutdown da classe Win32_OperatingSystem

O método de classe WMIWin32Shutdown fornece o conjunto completo de opções de desligamento compatíveis com os sistemas operacionais Win32. Isso inclui logoff, desligamento, reinicialização e forçar um logoff, desligamento ou reinicialização.

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 Win32Shutdown(
  [in] sint32 Flags,
  [in] sint32 Reserved = 
);

Parâmetros

Sinalizadores [in]

Conjunto bitmapped de sinalizadores para desligar o computador. Para forçar um comando, adicione o sinalizador Force (4) ao valor do comando. O uso do Force em conjunto com Desligamento ou Reinicialização em um computador remoto desliga imediatamente tudo (incluindo WMI, COM e assim por diante) ou reinicializa o computador remoto. Isso resulta em um valor retornado indeterminado.

0 (0x0)

Fazer logoff – registra o usuário fora do computador. O logoff interrompe todos os processos associados ao contexto de segurança do processo que chamou a função de saída, registra o usuário atual fora do sistema e exibe a caixa de diálogo de logon.

4 (0x4)

Logoff Forçado (0 + 4) – registra o usuário fora do computador imediatamente e não notifica os aplicativos de que a sessão de logon está terminando. Isso pode resultar em perda de dados.

1 (0x1)

Desligamento – desliga o computador a um ponto em que é seguro desligar a energia. (Todos os buffers de arquivo são liberados para o disco e todos os processos em execução são interrompidos.) Os usuários veem a mensagem, It is now safe to turn off your computer.

Durante o desligamento, o sistema envia uma mensagem para cada aplicativo em execução. Os aplicativos executam qualquer limpeza durante o processamento da mensagem e retornam True para indicar que eles podem ser encerrados.

5 (0x5)

Desligamento Forçado (1 + 4) – Desliga o computador a um ponto em que é seguro desligar a energia. (Todos os buffers de arquivo são liberados para o disco e todos os processos em execução são interrompidos.) Os usuários veem a mensagem, It is now safe to turn off your computer.

Quando a abordagem de desligamento forçado é usada, todos os serviços, incluindo o WMI, são desligados imediatamente. Por isso, você não poderá receber um valor retornado se estiver executando o script em um computador remoto.

2 (0x2)

Reinicializar – desliga e reinicia o computador.

6 (0x6)

Reinicialização Forçada (2 + 4) – Desliga e reinicia o computador.

Quando a abordagem de reinicialização forçada é usada, todos os serviços, incluindo o WMI, são desligados imediatamente. Por isso, você não poderá receber um valor retornado se estiver executando o script em um computador remoto.

8 (0x8)

Desligar – desliga o computador e desativa a energia (se houver suporte do computador em questão).

12 (0xC)

Desligar forçada (8 + 4) – desliga o computador e desativa a energia (se houver suporte do computador em questão).

Quando a abordagem de desligamento forçado é usada, todos os serviços, incluindo o WMI, são desligados imediatamente. Por isso, você não poderá receber um valor retornado se estiver executando o script em um computador remoto.

Reservado [in]

Um meio de estender o Win32Shutdown. Atualmente, o parâmetro Reserved é ignorado.

Valor retornado

Retorna zero (0) para indicar êxito. Qualquer outro número indica um erro. Para obter códigos de erro, consulte Constantes de erro WMI ou WbemErrorEnum. Para obter valores gerais de HRESULT , consulte Códigos de erro do sistema.

Êxito (0)

Outros (1 a 4294967295)

Comentários

Para um gerenciamento mais eficiente de computadores em uma organização, os administradores precisam da capacidade de desligar ou reiniciar remotamente um computador ou de fazer logoff de um usuário remotamente. A capacidade de realizar essas tarefas permite que os administradores instalem software, reconfigurem as configurações do computador, removam computadores da rede e executem outras tarefas sem precisar desligar ou reiniciar manualmente cada computador.

Por exemplo, para executar uma atualização de rede, talvez seja necessário desligar todos os computadores em execução em um segmento de rede específico. Para forçar uma atualização Política de Grupo, você precisa fazer logoff dos usuários de seus computadores. Se um vírus de computador estiver presente em qualquer lugar da sua organização, talvez você queira desligar o máximo de computadores possível, antes que o vírus tenha a oportunidade de se espalhar. A capacidade de desligar e reiniciar computadores e de fazer logoff de usuários programaticamente em vez de manualmente pode ser uma enorme economia de tempo.

O processo de chamada deve ter o privilégio SE_SHUTDOWN_NAME .

O método Win32ShutdownTracker fornece o mesmo conjunto de opções de desligamento com suporte pelo método Win32Shutdown em Win32_OperatingSystem mas também permite que você especifique comentários, um motivo para desligamento ou um tempo limite.

O método Win32Shutdown não tem um parâmetro para bloquear uma estação de trabalho, deixando o usuário conectado. No entanto, as estações de trabalho podem ser bloqueadas na linha de comando usando o seguinte comando:

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

Exemplos

O exemplo De saída, reinicialização ou desligamento de vários computadores VBScript na Galeria do TechNet usa Win32Shutdown para fazer logoff, desligar, reinicializar ou desligar (dependendo da seleção) os computadores listados na matriz Servidor.

O ComputerManagement.ps1 exemplo do PowerShell na Galeria do TechNet inclui um método que chama Win32Shutdown em um computador remoto.

O exemplo do PowerShell a seguir usa o método Win32Shutdown para desligar o computador especificado.

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

O exemplo de código do PowerShell a seguir usa o cmdlet EnableAllPrivileges de get-wmiobject para obter os priviliges adequados.

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

O código de exemplo VB.NET a seguir usa o método Shutdown para reinicializar ou fazer logoff de um 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

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Namespace
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Confira também

Classes do sistema operacional

Win32_operatingsystem

Win32ShutdownTracker

Tarefas do WMI: Gerenciamento de Área de Trabalho

Executando operações privilegiadas usando o VBScript