Microsoft CIDC Audit

Lists All Assets in a Format for the Microsoft CIDC

Get data to populate the Microsoft Clean Inventory Data Contract template, sheet Hardware and Operating Systems. The audit is meant to help people enter data into the CIDC but will not provide final data for submission. It is recommended to scan both your Active Directory and the registry keys below before running the audit.

Before running the report the following custom registry scans are recommended:

  • Key HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion, Value CurrentVersion
  • Key HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion, Value EditionID

Microsoft CIDC

Microsoft CIDC Query

Select Top 1000000 tblState.Statename As [Lansweeper Asset State],
  tblAssets.AssetName As [Lansweeper Assetname],
  tblAssets.Domain,
  Null As [Server Farm Name],
  Null As [Cluster Fully Qualified Name],
  Coalesce(Case When tHyperVHost.FQDN = '' Then Null Else tHyperVHost.FQDN
  End, Case When tVMwareHost.FQDN = '' Then Null Else tVMwareHost.FQDN End, Case
    When tblAssets.FQDN = '' Then Null Else tblAssets.FQDN
  End, 'not scanned') As [Physical Machine Fully Qualified Name],
  tblAssets.Username As [Primary User],
  tblAssetCustom.Manufacturer As [Machine Manufacturer],
  tblAssetCustom.Model As [Machine Model],
  tBIOS.[BIOS serialnumber] As [BIOS Serial Number],
  tBIOS.ReleaseDate As [BIOS Release Date],
  Coalesce(CPUCountHyperV.[Count physical CPUs],
  CPUCountVMware.[Count physical CPUs], Case
    When tblAssetCustom.Manufacturer Like '%vmware%' Or
    tblAssetCustom.Model Like '%virtual%' Or
    tblAssetCustom.Serialnumber Like '%virtual%' Then Null
    Else CPUCount.[Count physical CPUs]
  End, 0) As [Physical Processor Total Count],
  Coalesce(tHyperVHost.Processor, tVMwareHost.Processor, Case
    When tblAssetCustom.Manufacturer Like '%vmware%' Or
    tblAssetCustom.Model Like '%virtual%' Or
    tblAssetCustom.Serialnumber Like '%virtual%' Then Null
    Else tblAssets.Processor End, '') As [Processor Model],
  Coalesce(CPUCountHyperV.[Count CPU cores], CPUCountVMware.[Count CPU cores],
  Case When tblAssetCustom.Manufacturer Like '%vmware%' Or
    tblAssetCustom.Model Like '%virtual%' Or
    tblAssetCustom.Serialnumber Like '%virtual%' Then Null
    Else CPUCount.[Count CPU cores] End, 0) As [Physical Cores Total Count],
  Case
    When Coalesce(tblAssetCustom.Manufacturer, '') =
    '' Then 'Unknown/Not scanned' Else Case
      When tblAssetCustom.Manufacturer Like '%vmware%' Or
      tblAssetCustom.Model Like '%virtual%' Or
      tblAssetCustom.Serialnumber Like '%virtual%' Then 'Virtual' Else Case
        When Exists(Select tblVmwareGuest.AssetID From tblVmwareGuest
        Where tblVmwareGuest.AssetID = tblAssets.AssetID) Or
        Exists(Select tblHyperVGuest.AssetID From tblHyperVGuest
        Where tblHyperVGuest.AssetID = tblAssets.AssetID) Then 'Host'
        Else 'Physical' End End End As [Machine Type Virtualization],
  Case When tblAssetCustom.Manufacturer Like '%vmware%' Or
    tblAssetCustom.Model Like '%virtual%' Or
    tblAssetCustom.Serialnumber Like '%virtual%' Then Case
      When Coalesce(tblAssets.FQDN, '') <> '' Then tblAssets.FQDN
      Else 'not scanned' End Else ''
  End As [Virtual Machine Fully Qualified Name],
  Case When tblAssetCustom.Manufacturer Like '%vmware%' Or
    tblAssetCustom.Model Like '%virtual%' Or
    tblAssetCustom.Serialnumber Like '%virtual%' Then
    CPUCount.[Count logical CPUs] Else Null
  End As [Virtual Processor Count Total],
  'virtual CPU' As [Virtual Processor Naming Type],
  tblAssets.Lastseen As [Inventory Date],
  tblOperatingsystem.InstallDate As [Install Date],
  Case
    When Coalesce(tRegistryEdition.Value, '') <> '' Then 'Windows ' +
    Replace(Case
      When SubString(tRegistryEdition.Value, Len(tRegistryEdition.Value),
      Len(tRegistryEdition.Value)) = 'N' Then SubString(tRegistryEdition.Value,
      1, Len(tRegistryEdition.Value) - 1) Else tRegistryEdition.Value
    End, 'Server', 'Server - ') Else '* ' + tblOperatingsystem.Caption
  End As [Operating System Family Name],
  Case
    When tRegistryEdition.Value Like 'server%' Then Case tRegistryVersion.Value
      When '5.2' Then '2003' When '6.0' Then '2008'
      When '6.1' Then '2008 Release 2' When '6.2' Then '2012'
      When '6.3' Then '2012 Release 2' Else tRegistryVersion.Value End
    When Coalesce(tRegistryEdition.Value, '') <> '' Then Case
      tRegistryVersion.Value When '5.0' Then '2000' When '5.1' Then 'XP'
      When '5.2' Then 'XP' When '6.0' Then 'Vista' When '6.1' Then '7'
      When '6.2' Then '8' When '6.3' Then '8.1' Else tRegistryVersion.Value End
    Else Case tRegistryVersion.Value When '5.0' Then '2000' When '5.1' Then 'XP'
      Else 'no registry value' End End As [Operating System Version Name],
  Null As [Installation Media Chanel],
  Case When tblOperatingsystem.SerialNumber Like '%OEM%' Then 'yes'
    Else 'no/unknown' End As [OEM install confirmed via BIOS],
  Null As [Licensing Product Family Name],
  Null As [Licensing Product Version Name],
  Null As [License Quantity Required],
  Null As [Active SA Quantity Required],
  Null As [Active SA Assigned],
  Null As [License Program Group Assigned],
  Null As [License Model Assigned],
  Null As [Environment Type],
  Null As [External Connector Licensing Required],
  Null As [License Mobility Flag],
  tblAssetCustom.Department As Division,
  'Lansweeper' As [Primary Discovery Tool],
  Null As Notes
From tblAssets
  Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
  Left Join (Select Max(tblBIOS.Lastchanged) As lastchanged,
    tblBIOS.Caption As Description,
    tblBIOS.Manufacturer,
    tblBIOS.ReleaseDate,
    tblBIOS.SerialNumber As [BIOS serialnumber],
    tblBIOS.SMBIOSBIOSVersion As Version,
    tblBIOS.AssetID
  From tblBIOS
  Group By tblBIOS.Caption,
    tblBIOS.Manufacturer,
    tblBIOS.ReleaseDate,
    tblBIOS.SerialNumber,
    tblBIOS.SMBIOSBIOSVersion,
    tblBIOS.AssetID) tBIOS On tblAssets.AssetID = tBIOS.AssetID
  Inner Join tblState On tblAssetCustom.State = tblState.State
  Left Join (Select tblProcessor.AssetID,
    Sum(tblProcessor.NumberOfLogicalProcessors) As [Count logical CPUs],
    Sum(tblProcessor.NumberOfCores) As [Count CPU cores],
    Count(tblProcessor.Caption) As [Count physical CPUs]
  From tblProcessor
  Group By tblProcessor.AssetID) CPUCount On tblAssets.AssetID =
    CPUCount.AssetID
  Left Join (Select Case
      When Len(TblHyperVGuestNetwork.MacAddress) < 4 Then '***'
      Else TblHyperVGuestNetwork.MacAddress End As MacAddress,
    TblHyperVGuestNetwork.HyperVGuestID
  From TblHyperVGuestNetwork) tHyperVGuestNetwork
    On tHyperVGuestNetwork.MacAddress = tblAssets.Mac
  Left Join tblHyperVGuest On tHyperVGuestNetwork.HyperVGuestID =
    tblHyperVGuest.hypervguestID
  Left Join tblAssets tHyperVHost On tHyperVHost.AssetID =
    tblHyperVGuest.AssetID
  Left Join (Select tblProcessor.AssetID,
    Sum(tblProcessor.NumberOfLogicalProcessors) As [Count logical CPUs],
    Sum(tblProcessor.NumberOfCores) As [Count CPU cores],
    Count(tblProcessor.Caption) As [Count physical CPUs]
  From tblProcessor
  Group By tblProcessor.AssetID) CPUCountHyperV On tHyperVHost.AssetID =
    CPUCountHyperV.AssetID
  Left Join (Select tblVmwareGuestNetwork.GuestID,
    Case When Len(tblVmwareGuestNetwork.MacAddress) < 4 Then '***'
      Else tblVmwareGuestNetwork.MacAddress End As MacAddress
  From tblVmwareGuestNetwork) tVMwareguestnetwork
    On tVMwareguestnetwork.MacAddress = tblAssets.Mac
  Left Join tblVmwareGuest On tVMwareguestnetwork.GuestID =
    tblVmwareGuest.GuestID
  Left Join tblAssets tVMwareHost On tVMwareHost.AssetID =
    tblVmwareGuest.AssetID
  Left Join (Select tblVmwareInfo.AssetID,
    tblVmwareInfo.numCpuThreads As [Count logical CPUs],
    tblVmwareInfo.numCpuCores As [Count CPU cores],
    tblVmwareInfo.numCpuPkgs As [Count physical CPUs]
  From tblVmwareInfo) CPUCountVMware On tVMwareHost.AssetID =
    CPUCountVMware.AssetID
  Left Join tblOperatingsystem On tblOperatingsystem.AssetID = tblAssets.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like '%\Windows NT\CurrentVersion' And
    tblRegistry.Valuename Like 'CurrentVersion') tRegistryVersion
    On tRegistryVersion.AssetID = tblAssets.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like '%\Windows NT\CurrentVersion' And
    tblRegistry.Valuename Like 'EditionID') tRegistryEdition
    On tRegistryEdition.AssetID = tblAssets.AssetID
Where tblAssets.Assettype = -1
Order By [Lansweeper Asset State],
  [Lansweeper Assetname]

Audit and Take Action in 3 Easy Steps

Download-Install-Lansweeper

1. Download & Install Lansweeper

Save-and-Run-the-Report

3. Run the Audit & Take Action

Download Lansweeper to Run this Audit

Harness the Power of Reporting