Para reiniciar um computador no Windows PowerShell, use uma ferramenta de linha de comando padrão ou uma classe WMI. Embora você esteja usando o Windows PowerShell somente para executar a ferramenta, aprender a alterar o estado de um computador nesse aplicativo ilustra alguns detalhes importantes do trabalho com ferramentas externas.
Bloqueando um computador
A única maneira de bloquear diretamente um computador com as ferramentas padrão disponíveis é chamando diretamente a funçãoLockWorkstation() em user32.dll:
rundll32.exe user32.dll,LockWorkStation
Esse comando bloqueará a estação de trabalho imediatamente. Ele usa rundll32.exe, que executa DLLs do Windows (e reduz o uso repetido das respectivas bibliotecas) para executar user32.dll, uma biblioteca de funções de gerenciamento do Windows.
Quando você bloquear uma estação de trabalho enquanto a Troca rápida do usuário estiver habilitada no Windows XP, o computador exibirá a tela de logon de usuário, em vez de iniciar o protetor de tela do usuário atual.
Para desligar sessões específicas em um Terminal Server, use a ferramenta de linha de comando tsshutdn.exe.
Efetuando logoff da sessão atual
Você pode usar várias técnicas diferentes para fazer logoff de uma sessão no sistema local. O modo mais simples é usar a ferramenta de linha de comando da Área de Trabalho Remota /Serviços de Terminal, logoff.exe (Para obter informações detalhadas, no prompt do Windows PowerShell, digite logoff /?). Para fazer logoff da sessão ativa atual, digite logoff sem argumentos.
Você também pode usar a ferramenta shutdown.exe com sua opção de logoff:
shutdown.exe -l
Uma terceira opção é usar o WMI. A classe Win32_OperatingSystem tem um método Win32Shutdown. Quando o método é chamado com o sinalizador 0, o logoff é iniciado:
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(0)
Para obter mais informações e para localizar outros recursos do método Win32Shutdown, consulte "Win32Shutdown Method of the Win32_OperatingSystem Class" (em inglês) no MSDN.
Desligando ou reiniciando um computador
O desligamento e a reinicialização de computadores geralmente são os mesmos tipos de tarefa. As ferramentas que desligam um computador geralmente são as que o reiniciam e vice-versa. Existem duas opções diretas para a reinicialização de um computador no Windows PowerShell. Use Tsshutdn.exe ou Shutdown.exe com os argumentos apropriados. Você pode obter informações de uso detalhadas em tsshutdn.exe /? ou shutdown.exe /?.
Você também pode executar as operações de desligamento e reinicialização usando Win32_OperatingSystem diretamente no Windows PowerShell.
Para desligar o computador, use o método Win32Shutdown com o sinalizador 1.
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(1)
Para reiniciar o sistema operacional, use o método Win32Shutdown com o sinalizador 2.
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)