Windowsがアクティブ化されているかどうかを確認したいが、メニューシステムに飛び込むことができない、またはデスクトップエクスペリエンスのないWindowsのバージョン(Server Coreなど)を使用している場合、アクティブ化ステータスを確認するにはどうすればよいですか?コマンドライン?
Windows 10またはWindows Server 2016/2019で、コマンドプロンプト(またはpowershell)を使用してアクティベーションステータスを表示するには、任意のコマンドラインツールを開き、次のコマンドを入力します
slmgr /xpr
オペレーティングシステムのアクティベーションステータスを示すダイアログが表示されます。オペレーティングシステムがまだアクティブ化されていない場合、ダイアログはそれが「通知モード」であることを示します
Windowsが正常にアクティブ化された場合、ダイアログは以下のように「Permanently Activated」であるか、または時間制限付きボリュームライセンスアクティベーションを使用している場合、アクティベーションの有効期限が切れる時刻が表示されます。
古いバージョンのWindows(Windows 7など)では、メッセージダイアログは似ていますが、テキストが少し異なる場合があります。
この方法は、ウィザードを完了する前に、Shift + F10を使用してコマンドプロンプトを起動し、Out-Of-Box Experience(OOBE)ウィザード中にアクティブ化ステータスを確認する場合にも役立ちます。
純粋なPowerShellソリューションは次のようになります。
Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" |
where { $_.PartialProductKey } | select Description, LicenseStatus
これにより、次のような出力が得られます。
Description LicenseStatus
----------- -------------
Windows(R) Operating System, OEM_DM channel 1
licenseStatusが1の場合、システムが永続的にアクティブ化されていることを意味します。
これの良い点は、-ComputerName
パラメータを指定することにより、RemoteMachinesを簡単に確認できることです。
Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName RemoteComp |
where { $_.PartialProductKey } | select Description, LicenseStatus
slmgr /xpr
の方が高速でわかりやすいとは言えますが。
cscript
を使用してslmgr.vbs
を実行し、バッチファイルにラップしますfor /f
ループで出力を解析する:: Q:\Test\2019\04\07\SU_1422368.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
Set "WinVerAct="
For /f "tokens=*" %%W in ('
cscript /Nologo "C:\Windows\System32\slmgr.vbs" /xpr
') Do Set "WinVerAct=!WinVerAct! %%W"
if Not defined WinVerAct (
Echo:No response from slmgr.vbs
Exit /B 1
)
Echo Windows Version Activation Status:
Echo:"%WinVerAct:~1%"
出力例:
> Q:\Test\2019\04\07\SU_1422368.cmd
Windows Version Activation Status:
"Windows(R), Professional edition: Der Computer ist dauerhaft aktiviert."
Slmgr.vbsをラップする1行のPowerShellスクリプト:
$WinVerAct = (cscript /Nologo "C:\Windows\System32\slmgr.vbs" /xpr) -join ''