Résumé

Après l’application des mises à jour de sécurité d’avril 2017 décrites dans les instructions de mise à jour de sécurité Microsoft CVE-2017-0160, la commande PowerShell v3.0+ stop-computer échoue. En outre, si des applications utilisent des méthodes de gestion de l’alimentation (arrêt ou redémarrage, par exemple) de la classe Win32_OperatingSystem et que l’attribut EnablePrivileges a la valeur true, elles peuvent rencontrer le même problème. Un message d’erreur « Privilège non maintenu » s’affiche.

Informations supplémentaires

Symptômes pour le problème 1

Les clients qui tentent d’arrêter ou de redémarrer un ordinateur, local ou distant, avec la commande stop-computer sur PowerShell v3.0 et versions ultérieures, obtiennent le message d’erreur suivant :

stop-computer : Privilège non maintenu.

At line:1 char:1

+ stop-computer

+ ~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation : (<NOMORDINATEUR> :String) [Stop-Computer], ManagementE

+ FullyQualifiedErrorId : StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand

Solution de contournement pour le problème 1

Pour contourner ce problème, exécutez la commande “shutdown.exe” suivante pour exécuter les commandes d’arrêt et de redémarrage sur les systèmes locaux ou distants :

shutdown.exe [-r] [-s] [-m \\ordinateur]

Pour plus d’informations et pour obtenir de l’aide sur cette commande, exécutez :

shutdown.exe -?

Symptômes pour le problème 2

Les applications des clients qui utilisent des méthodes de gestion de l’alimentation (arrêt ou redémarrage, par exemple) de la classe Win32_OperatingSystem et pour lesquelles l’attribut EnablePrivileges a la valeur true peuvent rencontrer la même erreur « Privilège non maintenu ».

  • Exemple 1 (PowerShell) renvoyant l’erreur « Privilège non maintenu » :
      $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()

    • Exemple 2 (code C#) renvoyant l’erreur « Privilège non maintenu » :
        [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); } }

Solution de contournement pour le problème 2

  • Pour l’exemple 1 (PowerShell) :
      $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot()

  • Pour l’exemple 2 (code 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"]); } } } }

Résolution

Résolution du problème 1

Pour résoudre ce problème, installez la mise à jour correspondant à votre système dans le tableau ci-dessous en fonction.

Système d’exploitation

Mise à jour

Windows Server 2008

Pour .NET Framework 2.0, installez la mise à jour 4020511

Pour .NET Framework 4.5.2, installez la mise à jour 4020507

Pour .NET Framework 4.6, installez la mise à jour 4020503

Windows 7 et Windows Server 2008 R2

Pour .NET Framework 3.5.1, installez la mise à jour 4020513

Pour .NET Framework 4.5.2, installez la mise à jour 4020507

Pour .NET Framework 4.6 ou 4.6.1, installez la mise à jour 4020503

Pour .NET Framework 4.6.2, installez la mise à jour 4020500

Windows Server 2012

Pour .NET Framework 3.5, installez la mise à jour 4020512

Pour .NET Framework 4.5.2, installez la mise à jour 4020506

Pour .NET Framework 4.6 ou 4.6.1, installez la mise à jour 4020501

Pour .NET Framework 4.6.2, installez la mise à jour 4020498

Windows 8.1 et Windows Server 2012 R2

Pour .NET Framework 3.5, installez la mise à jour 4020514

Pour .NET Framework 4.5.2, installez la mise à jour 4020505

Pour .NET Framework 4.6 ou 4.6.1, installez la mise à jour 4020502

Pour .NET Framework 4.6.2, installez la mise à jour 4020499

Windows 10 RTM

Installez la mise à jour 4019474

Windows 10 version 1511

Installez la mise à jour 4019473

Windows 10 version 1607 et Windows Server 2016

Installez la mise à jour 4019472

Windows 10 version 1703

Installez la mise à jour 4016871

Résolution du problème 2

Pour résoudre ce problème, installez la mise à jour correspondant à votre système dans le tableau ci-dessous en fonction.

Version du produit

Pré-version du correctif cumulatif mensuel - KB

Mise à jour pour Windows 10 version 1703 (RS2)
Windows Server 2016

Catalogue
4034674

.NET Framework 4.7

4034674

Mise à jour pour Windows 10 version 1607
Windows Server 2016


 

.NET Framework 3.5

Catalogue
4034661

.NET Framework 4.6.2 et 4.7

Catalogue
4034658

Windows 8.1
Windows RT 8.1
Windows Server 2012 R2

Catalogue
4035038

.NET Framework 3.5

4033997

.NET Framework 4.5.2

4033991

.NET Framework 4.6, 4.6.1, 4.6.2, 4.7

4033989

Windows Server 2012

Catalogue
4035037

.NET Framework 3.5

4033995

.NET Framework 4.5.2

4033992

.NET Framework 4.6, 4.6.1, 4.6.2, 4.7

4033988

Windows 7
Windows Server 2008 R2

Catalogue
4035036

.NET Framework 3.5.1

4033996

.NET Framework 4.5.2

4033993

.NET Framework 4.6, 4.6.1, 4.6.2, 4.7

4033990

Windows Server 2008

Catalogue
4035039

.NET Framework 2.0

4033994

.NET Framework 4.5.2

4033993

.NET Framework 4.6

4033990

Remarque Une mise à jour de .NET Framework 3.5 pour Windows 10 version 1703 est prévue dans une mise à jour ultérieure.

Produits concernés

Cet article s’applique aux produits suivants, tel que décrit dans la section Produits concernés de la CVE-2017-0160 :

Microsoft .NET Framework 2.0, 3.5, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 sur toutes les versions prises en charge de Windows qui exécutent PowerShell 3.0 et versions ultérieures.

 

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?

Nous vous remercions de vos commentaires.

×