Home >
Windows にまつわる e.t.c.
PowerShell で Windows がアクティベーションされているか否かを確認する
Windows のアクティベーション状態を確認するには、「slmgr /dli」や「slmgr
/dlv」を使いますが、確認結果は GUI 表示になります。
ローカル環境の確認であれば GUI でも良いのですが、リモート環境の状態を確認したい時は PowerShell で
Invoke-Command とかしたいですよね。
slmgr は .vbs なので、cscript を明示的に指定すると結果がテキストになります。
こいつをラッピングして、アクティベーション状態を $true / $false で返す関数にしてみました。
############################################################
# アクティベーション確認
############################################################
function IsActivation(){
# ライセンス状態
$Status = cscript $env:WinDir\System32\slmgr.vbs /dli
# 言語環境確認
$NowLanguage = [System.Globalization.CultureInfo]::CurrentCulture.Name
# 日本語環境
if( $NowLanguage -eq "ja-JP" ){
[array]$LicenseStatus = $Status | Select-String "ライセンスの状態"
if( $LicenseStatus.Length -eq 1 ){
if( $LicenseStatus[0] -match "ライセンスされています" ){
# ライセンス済み
return $true
}
else{
# ライセンスされていない
return $false
}
}
else{
# ステータスがおかしい
return $false
}
}
# 日本語環境以外
else{
[array]$LicenseStatus = $Status | Select-String "License Status"
if( $LicenseStatus.Length -eq 1 ){
if( $LicenseStatus[0] -match "Licensed" ){
# ライセンス済み
return $true
}
else{
# ライセンスされていない
return $false
}
}
else{
# ステータスがおかしい
return $false
}
}
}
|
こいつをこんな感じで Invoke-Command すれば、リモートサーバーのアクティベーション状態が確認できますね。
Invoke-Command -ComputerName hogehoge -ScriptBlock
$Function:IsActivation |
関連情報
リモート コンピューターのバッチ操作(Invoke-Command)
http://www.vwnet.jp/Windows/PowerShell/InvokeCommand.htm
Copyright © MURA
All rights reserved.