요약
Microsoft 보안 업데이트 지침 CVE-2017-0160에 설명된 2017년 4월 보안 업데이트를 적용한 후 PowerShell v3.0+ stop-computer 명령이 실패합니다. 또한 응용 프로그램에서 Win32_OperatingSystem 클래스에서 종료 및 재부팅 같은 전원 관리 방법을 사용하고 EnablePrivileges 특성을 true로 설정하는 경우에도 동일하게 실패할 수 있습니다. “권한 없음” 오류 메시지가 반환됩니다.
추가 정보
문제 1에 대한 증상:
PowerShell v3.0 이상에서 stop-computer 명령을 사용하여 로컬 또는 원격 시스템을 끄거나 다시 시작하려는 고객에게 다음과 같은 오류 메시지가 나타납니다.
stop-computer : 사용 권한을 가지고 있지 않습니다.
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 업데이트 1703(RS2) |
|
.NET Framework 4.7 |
|
Windows 10 업데이트 1607 |
|
.NET Framework 3.5 |
카탈로그
|
.NET Framework 4.6.2 및 4.7 |
카탈로그
|
Windows 8.1 |
|
.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 |
|
.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 |
참고 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