KMS Event LOG
The 12290 event entry gives a significant amount of information that can be used to figure out what kind client contacted the host…and why a failure may occur.

In the event entry, you will find the following relevant information:
- Minimum count needed to activate
- The KMS client is reporting that the count from the KMS host must be 5 in order to activate.
That means this is a Server OS, though whether it is Windows Server 2008 or Windows Server 2008 R2 will not be clarified, nor will the specific edition. If your clients are not activating, make sure that the count is sufficient on the host.
- Client Machine ID (CMID)
- This is a unique value per system. If this is not unique it is because an image was not properly prepared for distribution (sysprep /generalize). This will manifest on the KMS host as a count that will not increase, despite a sufficient number of clients existing in the environment. See KB929829 for more info.
- License State and Time to State Expiration
- This is the license state that the client currently has. It can help you differentiate a client that is trying to activate for the first time versus one that is attempting to reactivate. The time entry will tell you how much longer the client will be in that state, if nothing changes.
Another relevant event to look for on your KMS is the 12293.
This event indicates that the host failed to publish the required records in DNS. That will definitely cause failures and is something you should confirm after settting up your host and before deploying clients.
|
MinmumCountToActivate |
ReplacementStrings[2] |
|
ClientFQDN |
ReplacementStrings[3] |
|
ClientTimeStamp |
ReplacementStrings[5] |
|
VM |
ReplacementStrings[6] |
|
TimeToStateExpiration |
ReplacementStrings[8] |
|
ProductID |
ReplacementStrings[9] |
|
ClientMachineID |
ReplacementStrings[4] |
LicenseStatus
Data type: uint32
Access type: Read-only
Specifies the license status of this product application. The following values are possible.
|
Value |
Description |
|
0 |
Unlicensed |
|
1 |
Licensed |
|
2 |
OOBGrace |
|
3 |
OOTGrace |
|
4 |
NonGenuineGrace |
|
5 |
Notification |
|
6 |
ExtendedGrace |
There is no "Volume Activation expiration" field, see below, the blank fields were removed for the purposes of posting. I've added the full text of what shows up in the KMS logs for the Window 10 devices.
12290 Event details:
0x0,25,pcname.domain.com,24ecc780-5463-4cfc-bc0c-71744241ee4f,2015/10/27 17:10,0,5,0,2de67392-b7a7-462a-b1ca-108dd189f588
Ah. I meant the slmgr.vbs output from the KMSclient, not the KMShost.
But anyway, the 12290 event tells the story;
,0,5,0, = ,isNotAVirtualMachine, IsInNotificationState, ZeroMinutesUntilCurrentStateExpires
It's a zero, because it's already in Notification, so there is not further state to transition into, it has exhausted all less-impactful "Grace" states (or it transitioned/skipped them). The only possible transition is into Licensed=1 (or maybe rearm into OOB Grace=2)
[edit: apparently no Grace period in Win10.][thanks darrellg :)]
So, this machine needs to be correctly activated/renewed.
If this machine, when it contacts this KMShost, does not (re)activate, the problem wouldn't seem to be at the KMShost, rather, at the client.
Your KMShost is getting the requests, and seems to be responding with a suitable response for the client to activate.
If the client isn't becoming activated after that response, check the client.
Check the client anyway, you should see the "request" go out to the KMShost and the response come back from the KMShost and the client activation result (or failure) should be logged on the client.
Basically, KMSclients send up a request stating what they are (GenericSKU/productID) and who they are (uniqueCMID) and what minimum_current_count they require. Your host seems to be responding with all the required answers, so it's up to the client to accept and process that response, or to throw an error event (locally logged on the client).
##############CONNECTION SQL ###########$Connection###########
Get-Content "D:\xxxxx\SQLConnections_1.ps1" | Invoke-Expression $SQLtable="tablename"
Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100 $cmd=Invoke-Sqlcmd -ServerInstance $SQLServer -Database $SQLDatabase -Query "select MAX(EventIndexID) from [$SQLDatabase].dbo.[$SQLtable]"
$max=[string]$cmd.column1
$maxlength=$max.length
echo "$maxlength"
if ($maxlength -ne "")
{ echo "start collect event"
$eventlogs=Get-EventLog -ComputerName KMSSERVERNAME -Logname "Key Management Service" | Select machinename,TimeGenerated,Message,ReplacementStrings,EventID,Index| Where-Object {$_.Index -gt "$max"}
}
else
{
echo "start collect event,no maxtRecordId"
$eventlogs=Get-EventLog -ComputerNameKMSSERVERNAME -Logname "Key Management Service" | Select machinename,TimeGenerated,Message,ReplacementStrings,EventID,Index
} IF($eventlogs)
{ foreach($eventlog in $eventlogs)
{
$servername=$eventlog.machinename
$TimeGenerated=$eventlog.TimeGenerated
$EventId=$eventlog.EventID
$EventIndexID=$eventlog.Index
$Message=($eventlog.message) -Replace "'", "''"
$MinmumCountToActivate=$eventlog.ReplacementStrings[2]
$ClientFQDN=$eventlog.ReplacementStrings[3]
$ClientTimeStamp=$eventlog.ReplacementStrings[5]
$VM=$eventlog.ReplacementStrings[6]
$TimeToStateExpiration=$eventlog.ReplacementStrings[8]
$ProductID=$eventlog.ReplacementStrings[9]
$ClientMachineID=$eventlog.ReplacementStrings[4]
$insert="insert into tablename(ServerName, TimeGenerated,EventId, Message,EventIndexID,MinmumCountToActivate,ClientFQDN,ClientTimeStamp,VM,TimeToStateExpiration,ProductID,ClientMachineID) values(N'$servername',N'$TimeGenerated',N'$EventId',N'$Message',N'$EventIndexID',N'$MinmumCountToActivate',N'$ClientFQDN',N'$ClientTimeStamp',N'$VM',N'$TimeToStateExpiration',N'$ProductID',N'$ClientMachineID')"
$cmd1=new-object system.Data.SqlClient.SqlCommand($insert,$Connection)
$cmd1.CommandTimeout=6000
$cmd1.ExecuteNonQuery()
} }
else{
echo "no events"
$insert="insert into tablename(ServerName,Message) values(N'$dc',N'No events')"
$cmd1=new-object system.Data.SqlClient.SqlCommand($insert,$Connection)
$cmd1.CommandTimeout=6000
$cmd1.ExecuteNonQuery()
} $errorcount=$error.count
if($errorcount -eq "")
{
$subject = "xxx"
$message="xxxxxx"
Get-Content "D:\xxx\SQL_Data_Admin.ps1" | Invoke-Expression
Send-mailmessage –bodyashtml –from $from –to $to –subject $subject –body $message –smtpserver $smtpserver -Encoding ([System.Text.Encoding]::Utf8)
} $Connection.Close()
KMS Event LOG的更多相关文章
- ora-28056 (Writing audit records to Windows Event Log failed)
系统:windows xp oracle 版本 SQL> select * from v$version; BANNER ------------------------------------ ...
- windows 系统无法启动windows event log 服务
windows 系统无法启动windows event log 服务 关键词:无法启动系统事件日志 尝试解决步骤 [1]权限:把如图中logsfile文件等都给local service [2]把C: ...
- application pool can not write to event log
https://stackoverflow.com/questions/9564420/the-source-was-not-found-but-some-or-all-event-logs-coul ...
- Event log c++ sample.
1. Init regedit. bool InitLog( TCHAR *logName, TCHAR *sourceName, TCHAR *MessageDllName ) { // This ...
- AngularJS - $index, $event, $log
原文: https://thinkster.io/egghead/index-event-log --------------------------------------------------- ...
- AWR发现TOP Event log file sequential read
对客户DB进行巡检,发现TOP EVENT是LOG FILE Sequential read 等待事件说明 https://www.xuebuyuan.com/zh-hant/1743045.html ...
- How to write to an event log by using Visual C#
using System; using System.Diagnostics; namespace WriteToAnEventLog_csharp { /// Summary description ...
- 如何在 Windows Event Log 中查找系统重启的信息
事件ID:12 事件ID 13: 事件ID 41: 事件ID 6008: 事件ID 1074:事件ID 1074: ========================================== ...
- Android 解读Event和Main Log
1 Android P EventLogTags文件 Android P 9.0.0 所有EventLogTags文件List: system/bt/EventLogTags.logtags syst ...
随机推荐
- Cocos2d-x开发---关于安卓打包所遇到的错误记录
非常久都没有在安卓打过包了.之前的项目因为某些问题没有考虑做安卓版本号,所以涉及到安卓打包的时候都是自己在折腾. 这段时间离职了,空余时间就有非常多了.所以我能够折腾点事了.想起来 ...
- python-嵌套循环(Nested loop)-久久乘法表
嵌套-久久乘法 for i in range(1,10): for j in range(1,10): print('{} × {} = {}'.format(i,j,i*j))最外层的循环依次将数值 ...
- Current thread must be set to single thread apartment (STA) mode before OLE,当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。
Add the STAThreadAttribute attribute on the Main method. This attribute is required if your program ...
- Java - NIO基础
1. 概述 现在使用NIO的场景越来越多,很多技术框架都使用NIO技术,比如Tomcat,Jetty,Netty等. 传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer进行操 ...
- Vivado Logic Analyzer的进一步探讨
本文基于Vivado 2014.2,代码基于文章http://blog.chinaaet.com/detail/37239中使用的代码. 这一篇仅讨论在综合后的Netlist中选择信号进行捕获的方法. ...
- Unity3D中uGUI事件系统简述及使用方法总结
Unity3D的uGUI系统的将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值.如下图所示: 先以PointerClick为例.这个是用于某点点击事件.其他事件都可 ...
- spring security 一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中 配置的Bean,充分利用了Spring ...
- [转]Mac系统安装软件提示软件已损坏的解决办法
很多朋友下载本站提供的Mac软件资源,安装提示“xxx软件已损坏,打不开,您应该将它移到废纸篓”的提示,其实并不是软件本身有问题,而是Mac系统的一个安全机制问题,按照如下方法操作,即可打开并安装本站 ...
- android mvp设计模式
什么是MVP MVP,全称 Model-View-Presenter.要说MVP那就不得不说一说它的前辈——MVC(Model-View-Controller,模型-视图-控制器). View:对应于 ...
- $.messager.show扩展:指定位置显示
扩展了个$.messager.showBySite,根据舍得的位置显示$.messager.show.代码如下: /** * 指定位置显示$.messager.show * options $.mes ...