Windows 정품 인증 결과를 명령의 표준 출력에서 ​​얻는 방법

3369 단어 WindowsServerIaC

결론



cscript에 slmgr 경로를 전달합니다.
상태 확인만 하면 "/dli"옵션을, 보다 상세한 정보를 알고 싶은 경우는 "/dlv"옵션을 사용합니다.
C:\>cscript "C:\Windows\System32\slmgr.vbs" /dli

Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

名前: Windows(R), Core edition
説明: Windows(R) Operating System, RETAIL channel
プロダクト キーの一部: XXXXX
ライセンスの状態: ライセンスされています

경위



계기는 검증 자동화



여러분, IaC(Infrastructure as Code) 하고 있습니까?
최근에는 응용 프로그램뿐만 아니라 인프라 경계에서도 구축 및 검증을 자동화하기 위해 (간단한) 코드를 작성하는 것이 요구되고 있습니다.

단지 시대의 조류를 타는 것은 아니지만, 구축한 WindowsServer의 OS 설정치가 올바르게 설정되어 있는지를 확인하기 위해서 「컴퓨터의 관리」나 「제어판」이나 「서버의 역할・기능」이나를 GUI 로 배회하고 확인하고 캡처를 취하고…
그래서, 범용적인 OS 설정치를 취득하는 코드를 커맨드 베이스로 써 결과를 취득해 검증을 자동화해 나가는, 라고 하는 흐름에는 대찬성인 것입니다만, WindowsServer의 설정치를 커멘드로 확인해 나갈 때, 귀찮은 것이 Windows 정품 인증 확인입니다.

slmgr는 vbs이다



Windows 정품 인증을 GUI로 확인하는 경우, "시스템"에서 확인하는 것이 일반적이라고 생각합니다.


이 확인을 CUI로 실시하고 싶은 경우에 나오는 명령이 slmgr입니다만…
slmgr의 확인 결과는 메시지 상자에 표시됩니다.
C:\>slmgr /dli



끔찍하네요, 이거.
어째서 명령으로 입력하고 있는데 메시지 박스로 되돌려 오는 거야…
글쎄, 그것은 slmgr이 vbs이기 때문인 것 같습니다.
C:\>where slmgr
C:\Windows\System32\slmgr.vbs

slmgr.vbs의 2770 행 정도에 이런 설명이 있습니다.

slmgr.vbs
Private Sub LineFlush(str)
    WScript.Echo g_EchoString & str
    g_EchoString = ""
End Sub
WScript.Echo 를 vbs 안에 기술했을 경우, 통상은 대화용인 WScript 에 의해 처리되기 (위해)때문에, 메세지 박스로서 출력되고 있는 것 같습니다.

vbs 메시지 상자를 표준 출력



Wscript가 처리하는 vbs를 명시 적으로 Cscript로 처리하려면 Cscript의 인수로 vbs를 전달하면됩니다.
C:\>cscript "C:\Windows\System32\slmgr.vbs" /dli

Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

名前: Windows(R), Core edition
説明: Windows(R) Operating System, RETAIL channel
プロダクト キーの一部: XXXXX
ライセンスの状態: ライセンスされています

이제 무사히 Windows 정품 인증 결과를 표준 출력으로 반환할 수 있었습니다.

또한 보충해 두면 Wscript와 Cscript는 모두 WSH(Windows Script Host)라는 Windows 스크립트 실행 환경에서 가동하는 실행 엔진입니다. Wscript는 GUI에서의 대화용이고 Cscript는 콘솔 조작용의 이용이 상정되고 있다는 점에서 다릅니다.



Wscript
Cscript


본체 경로
"C:\Windows\System32\wscript.exe"
"C:\Windows\System32\cscript.exe"

용도
GUI(대화형)
CUI (콘솔 조작)

WScript.Echo
메시지 상자
콘솔 표준 출력


결론



라이선스 인증을 커맨드 베이스로 확인하는데 어째서 이런 귀찮은 일을 해야 할까라고 생각합니다만, 분명 앞으로는 Powershell라든지로 간단하게 인증 결과를 돌려주게 되겠지요. 모르겠지만. 욕망입니다.

기재의 잘못 등 있으면 꼭 지적을 부탁드립니다.

참고 사이트



Wscript와 Cscript의 차이 - WSH@Workshop
cscript와 wscript의 차이점 | 문자 출력 방법

좋은 웹페이지 즐겨찾기