Resumo
Depois de aplicar as atualizações de segurança de abril de 2017 descritas na orientação de atualização de segurança da Microsoft CVE-2017-0160, o comando stop-computer do PowerShell v3.0+ falha. Além disso, se os aplicativos usarem os métodos de gerenciamento de energia, como desligamento ou reinicialização, da classe Win32_OperatingSystem e definirem o atributo EnablePrivileges como true, eles poderão observar a mesma falha. É retornada uma mensagem de erro de "Privilégio não mantido".
Mais informações
Sintomas do problema 1
Os clientes que tentarem desligar ou reiniciar um sistema, local ou remoto, usando o comando stop-computer no PowerShell v3.0 e versões posteriores verão o seguinte erro:
stop-computer : Privilégio não mantido.
Na linha:1 char:1
+ stop-computer
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (<COMPUTERNAME>:String) [Stop-Computer], ManagementE
+ FullyQualifiedErrorId : StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand
Solução alternativa para o problema 1
Para contornar esse problema, execute o seguinte comando “shutdown.exe” para executar o desligamento e reiniciar as operações em sistemas locais ou remotos:
shutdown.exe [-r] [-s] [-m \\computer]
Para obter mais informações e ajuda com o comando, execute:
shutdown.exe -?
Sintomas do problema 2
Aplicativos de cliente que usam métodos de gerenciamento de energia, como desligamento ou reinicialização, da classe Win32_OperatingSystem e definem o atributo EnablePrivileges como true, podem observar o mesmo erro de “Privilégio não”mantido.
- 
                  O exemplo 1 (PowerShell) retorna o erro“Privilégio não”mantido: $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot() - 
                      O exemplo 2 (código C#) retorna o erro “Privilégio não mantido”: [STAThread] static void Main(string[] args) { ManagementClass mgmtObject = new ManagementClass("Win32_OperatingSystem"); foreach (ManagementObject iterMgmtObject in mgmtObject.GetInstances()) { iterMgmtObject.Scope.Options.EnablePrivileges = true; iterMgmtObject.InvokeMethod("Reboot", null, null); } } 
 
- 
                      
Solução alternativa para o problema 2
- 
                      Para o exemplo 1 (PowerShell): $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot() 
- 
                      Para o exemplo 2 (código C#): using System; using System.Collections.Generic; using System.Linq; using System.Management; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { public class Program { static void Main(string[] args) { var mgmtScope = new ManagementScope( ManagementPath.DefaultPath, new ConnectionOptions() { EnablePrivileges = true }); var mgmtClass = new ManagementClass(mgmtScope, new ManagementPath("Win32_OperatingSystem"), null); foreach (ManagementObject mgmtInst in mgmtClass.GetInstances()) { var mgmtCallResult = mgmtInst.InvokeMethod("Reboot", null, null); Console.Out.WriteLine("Reboot() Return Value: {0}", mgmtCallResult["ReturnValue"]); } } } } 
Resolução
Solução para o problema 1
Para resolver esse problema, instale a atualização na tabela abaixo de acordo com seu sistema.
| Sistema operacional | Atualização | 
| Windows Server 2008 | Para o .NET Framework 2.0, instale a atualização 4020511 Para o .NET Framework 4.5.2, instale a atualização 4020507 Para o .NET Framework 4.6.2, instale a atualização 4020503 | 
| Windows 7 e Windows Server 2008 R2 | Para o .NET Framework 3.5.1, instale a atualização 4020513 Para o .NET Framework 4.5.2, instale a atualização 4020507 Para o .NET Framework 4.6 ou 4.6.1, instale a atualização 4020503 Para o .NET Framework 4.6.2, instale a atualização 4020500 | 
| Windows Server 2012 | Para o .NET Framework 3.5, instale a atualização 4020512 Para o .NET Framework 4.5.2, instale a atualização 4020506 Para o .NET Framework 4.6 ou 4.6.1, instale a atualização 4020501 Para o .NET Framework 4.6.2, instale a atualização 4020498 | 
| Windows 8.1 e Windows Server 2012 R2 | Para o .NET Framework 3.5, instale a atualização 4020514 Para o .NET Framework 4.5.2, instale a atualização 4020505 Para o .NET Framework 4.6 ou 4.6.1, instale a atualização 4020502 Para o .NET Framework 4.6.2, instale a atualização 4020499 | 
| Windows 10 RTM | Instale a atualização 4019474 | 
| Windows 10 versão 1511 | Instale a atualização 4019473 | 
| Windows 10 Versão 1607 e Windows Server 2016 | Instale a atualização 4019472 | 
| Windows 10 versão 1703 | Instale a atualização 4016871 | 
Solução para o problema 2
Para resolver esse problema, instale a atualização na tabela abaixo de acordo com seu sistema.
| Versão do Produto | Prévia do pacote cumulativo de qualidade KB | 
|---|---|
| Windows 10 Atualização 1703 (RS2) Windows Server 2016 | |
| .NET Framework 4,7 | |
| Windows 10 Atualização 1607 Windows Server 2016 | 
 | 
| .NET Framework 3.5 | Catálogo 4034661 | 
| .NET Framework 4.6.2 e 4.7 | Catálogo 4034658 | 
| Windows 8.1 Windows RT 8.1 Windows Server 2012 R2 | |
| .NET Framework 3.5 | |
| .NET Framework 4.5.2 | |
| .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 | |
| Windows Server 2012 | |
| .NET Framework 3.5 | |
| .NET Framework 4.5.2 | |
| .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 | |
| Windows 7 Windows Server 2008 R2 | |
| .NET Framework 3.5.1 | |
| .NET Framework 4.5.2 | |
| .NET Framework 4.6, 4.6.1, 4.6.2, 4.7 | |
| Windows Server 2008 | |
| .NET Framework 2.0 | |
| .NET Framework 4.5.2 | |
| .NET Framework 4,6 | 
Observação Uma atualização para o .NET Framework 3.5 para Windows 10 Versão 1703 está agendada no futuro.
Aplicável a
Este artigo é aplicável aos seguintes produtos, conforme descrito na seção Produtos afetados da CVE-2017-0160:
Microsoft .NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 em todas as versões com suporte do Windows executando o PowerShell 3.0 e versões posteriores.
 
                         
				 
				