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的更多相关文章

  1. ora-28056 (Writing audit records to Windows Event Log failed)

    系统:windows xp oracle 版本 SQL> select * from v$version; BANNER ------------------------------------ ...

  2. windows 系统无法启动windows event log 服务

    windows 系统无法启动windows event log 服务 关键词:无法启动系统事件日志 尝试解决步骤 [1]权限:把如图中logsfile文件等都给local service [2]把C: ...

  3. 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 ...

  4. Event log c++ sample.

    1. Init regedit. bool InitLog( TCHAR *logName, TCHAR *sourceName, TCHAR *MessageDllName ) { // This ...

  5. AngularJS - $index, $event, $log

    原文: https://thinkster.io/egghead/index-event-log --------------------------------------------------- ...

  6. AWR发现TOP Event log file sequential read

    对客户DB进行巡检,发现TOP EVENT是LOG FILE Sequential read 等待事件说明 https://www.xuebuyuan.com/zh-hant/1743045.html ...

  7. How to write to an event log by using Visual C#

    using System; using System.Diagnostics; namespace WriteToAnEventLog_csharp { /// Summary description ...

  8. 如何在 Windows Event Log 中查找系统重启的信息

    事件ID:12 事件ID 13: 事件ID 41: 事件ID 6008: 事件ID 1074:事件ID 1074: ========================================== ...

  9. Android 解读Event和Main Log

    1 Android P EventLogTags文件 Android P 9.0.0 所有EventLogTags文件List: system/bt/EventLogTags.logtags syst ...

随机推荐

  1. tomcat中的Manager App帐号password管理

    tomcat根文件夹下的conf文件夹下有个tomcat-users.xml文件 填写内容例如以下 <? xml version='1.0' encoding='utf-8'? >< ...

  2. Atitit JAVA p2p设计与总结  JXTA 2

    Atitit JAVA p2p设计与总结  JXTA 2 JXTA 2 是开放源代码 P2P 网络的第二个主要版本,它利用流行的.基于 Java 的参考实现作为构建基础.在设计方面进行了重要的修改,以 ...

  3. atitit.系统架构图 的设计 与工具 attilax总结

    atitit.系统架构图 的设计 与工具 attilax总结 1. 架构图的4个版式(标准,(左右)悬挂1 2. 架构图的层次结构(下属,同事,助手)1 3. wps ppt1 4. 使用EDraw画 ...

  4. html页面中js判断浏览器是否是IE浏览器及IE浏览器版本

    HTML里: HTML代码中,在编写网页代码时,各种浏览器的兼容性是个必须考虑的问题,有些时候无法找到适合所有浏览器的写法,就只能写根据浏览器种类区别的代码,这时就要用到判断代码了.在HTML代码中, ...

  5. JAVA设计模式之 命令模式【Command Pattern】

    一.概述 命令模式能够将请求发送者和接收者全然解耦.发送者与接收者之间没有直接引用关系,发送请求的对象仅仅须要知道怎样发送请求,而不必知道怎样完毕请求.核心在于引入了命令类,通过命令类来减少发送者和接 ...

  6. git 删除github上的文件

    硬盘删除文件后,执行$ git status   会提示你仍然需要$ git rm <文件>   此时如果是要删除大批量文件,这么一个一个命令下去不得累死人啊   其实可以这样(不管之前有 ...

  7. ECMall2.x模板制作入门系列之2(模板标签/语法)

    ECMall2.x模板制作入门系列之2(模板标签/语法) 今天给大家带来一个模板语法的教程.希望能为ECMall模板制作者提供一份参考资料.如有问题.建议和意见,欢迎提出. 在ECMall模板中,用& ...

  8. H5area的热区锚点随着图片的尺寸而变化

    <area shape="rect" coords="338,308,609,589" > <img id="pic" s ...

  9. 创建ajax的过程

    step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象: step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法.URL以及验证信息: step3. 设置响应HTT ...

  10. 查看和修改Oracle数据库服务器端的字符集

    Oracle数据库查看和修改服务器端的字符集的方法是本文主要要介绍的内容,接下来救让我们一起来了解一下这部分内容. A.oracle server 端字符集查询 select userenv('lan ...