使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

摘要

套用安全性更新導覽 CVE-2017-0160 中所述的 2017 年 4 月安全性更新之後,PowerShell v3.0+ stop-computer 命令發生失敗。 此外,如果應用程式透過 Win32_OperatingSystem 類別使用電源管理方法,例如關機或重新開機,以及將 EnablePrivileges 屬性設定為 true,可能會發生相同的失敗。 系統傳回「沒有權限」錯誤訊息。

其他相關資訊

問題 1 的徵狀

客戶若使用 PowerShell v3.0 或更新版本的 stop-computer 命令,嘗試從本機或遠端關閉或重新啟動系統,會看到以下錯誤訊息:

stop-computer : Privilege not held.

At line:1 char:1

+ stop-computer

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

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

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

問題 1 的因應措施

若要解決這個問題,請執行以下 “shutdown.exe” 命令,在本機或遠端系統執行電源關閉和重新啟動作業:

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

如需更多資訊和命令說明,請執行: 

shutdown.exe -?

問題 2 的徵狀

客戶應用程式若透過 Win32_OperatingSystem 類別使用電源管理方法,例如關機或重新開機,以及將 EnablePrivileges 屬性設定為 true,可能會發生相同的「沒有權限」錯誤。

  • 範例 1 (PowerShell) 傳回「沒有權限」錯誤:
      $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername $win32OS.psbase.Scope.Options.EnablePrivileges = $true $win32OS.reboot()

    • 範例 2 (C# 程式碼) 傳回「沒有權限」錯誤:
        [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); } }

問題 2 的因應措施

  • 對於範例 1 (PowerShell):
      $computername= "." $win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges $win32OS.reboot()

  • 對於範例 2 (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"]); } } } }

解決方案

問題 1 的解決方案

若要解決此問題,請根據您的系統安裝下表中的更新。

作業系統

更新

Windows Server 2008

對於 .NET Framework 2.0,安裝更新 4020511

對於 .NET Framework 4.5.2,安裝更新 4020507

對於 .NET Framework 4.6,安裝更新 4020503

Windows 7 和 Windows Server 2008 R2

對於 .NET Framework 3.5.1,安裝更新 4020513

對於 .NET Framework 4.5.2,安裝更新 4020507

對於 .NET Framework 4.6 或 4.6.1,安裝更新 4020503

對於 .NET Framework 4.6.2,安裝更新 4020500

Windows Server 2012

對於 .NET Framework 3.5,安裝更新 4020512

對於 .NET Framework 4.5.2,安裝更新 4020506

對於 .NET Framework 4.6 或 4.6.1,安裝更新 4020501

對於 .NET Framework 4.6.2,安裝更新 4020498

Windows 8.1 和 Windows Server 2012 R2

對於 .NET Framework 3.5,安裝更新 4020514

對於 .NET Framework 4.5.2,安裝更新 4020505

對於 .NET Framework 4.6 或 4.6.1,安裝更新 4020502

對於 .NET Framework 4.6.2,安裝更新 4020499

Windows 10 RTM

安裝更新 4019474

Windows 10 1511 版

安裝更新 4019473

Windows 10 1607 版和 Windows Server 2016

安裝更新 4019472

Windows 10 1703 版

安裝更新 4016871

問題 2 的解決方案

若要解決此問題,請根據您的系統安裝下表中的更新。

產品版本

品質彙總套件預覽 KB

Windows 10 Update 1703 (RS2)
Windows Server 2016

Catalog
4034674

.NET Framework 4.7

4034674

Windows 10 Update 1607
Windows Server 2016


 

.NET Framework 3.5

Catalog
4034661

.NET Framework 4.6.2 和 4.7

Catalog
4034658

Windows 8.1
Windows RT 8.1
Windows Server 2012 R2

Catalog
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

Catalog
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

Catalog
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

Catalog
4035039

.NET Framework 2.0

4033994

.NET Framework 4.5.2

4033993

.NET Framework 4.6

4033990

注意:適用於 Windows 10 1703 版 .NET Framework 3.5 的更新已排定做為未來的更新。

適用於

本文章適用於 CVE-2017-0160受影響產品區段所描述的以下產品:

執行 PowerShell 3.0 或更新版本的所有受支援 Windows 版本中的 Microsoft .NET Framework 2.0、3.5、4.5.2、4.6、4.6.1、4.6.2 和 4.7 版本。

 

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×