Notification

Icon
Error

HELP - Add Registry Key Values to Asset Report - Adding Registry Key Values to existing Asset Report

Posted: Thursday, July 16, 2015 5:36:02 PM(UTC)
polingkyle

polingkyle

Member Original PosterPosts: 8
0
Like
This issue has been solved! Click here to view the solution
Good day. Let me preface this by saying that I know very little about SQL queries. That said, I'm trying to add some registry key values to an existing asset report. The registry keys are already being scanned and exist in tblRegistry. My asset report has multiple operating systems so not all of the assets will have the registry keys. I would like all assets to be on the report even if they don't have registry keys. There are 8 possible registry keys per asset. They are:

HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\ApplicationName
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\ApplicationOwner
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\DeptName
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\Location
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\Monitor_1
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\Monitor_2
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\Monitor_3
HKEY_LOCAL_MACHINE\SOFTWARE\Inventory\Purpose

Here is the report I am running currently:

Code:

Select Top 1000000 tblAssets.AssetID,
 tsysAssetTypes.AssetTypeIcon10 As icon,
 tblstate.Statename As [Asset state],
 tsysAssetTypes.AssetTypename As [Asset type],
 Coalesce(tblOperatingsystem.Caption, tblLinuxSystem.OSRelease,
 tblMacOSInfo.SystemVersion, 'other/none') As OS,
 tblAssetCustom.Manufacturer,
 tblAssetCustom.Model,
 tblAssetCustom.Serialnumber,
 tblAssetCustom.Warrantydate As [Warranty expiration],
 tblAssets.AssetName,
 tblAssets.Lastseen,
 tblAssets.Domain,
 tblADComputers.OU,
 tblAssets.IPAddress,
 tblAssets.FQDN,
 tblADComputers.Description,
 tblAssets.Memory,
 tblAssets.NrProcessors,
 tblAssets.Processor
From tblAssets
 Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
 Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
 Left Join (Select tblAssetUserRelations.AssetID,
   tblAssetUserRelations.Username,
   tblAssetUserRelations.Userdomain
 From tblAssetUserRelations
 Where tblAssetUserRelations.Type = 1) tOwner On tblAssets.AssetID =
   tOwner.AssetID
 Inner Join tblstate On tblstate.State = tblAssetCustom.State
 Left Join tblOperatingsystem On tblOperatingsystem.AssetID = tblAssets.AssetID
 Left Join tblLinuxSystem On tblAssets.AssetID = tblLinuxSystem.AssetID
 Left Join tblMacOSInfo On tblAssets.AssetID = tblMacOSInfo.AssetID
 Left Join tblADComputers On tblAssets.AssetID = tblADComputers.AssetID
Where tblAssetCustom.State = 1


Any help on this would be greatly appreciated. Thank you in advance.

Kyle Poling
Daniel.B
#1Daniel.B Member Posts: 1,150  
posted: 7/17/2015 2:53:53 PM(UTC)
If you would like to list all assets, even if they don't have data stored for this registry value, you need to use a subquery and make Left Join to it. If additionally you want to put all the values into one row of your report, you could use multiple subqueries, one for each value. Please find a modified report below which lists 3 of the values.
Code:

Select Top 1000000 tblAssets.AssetID,
  tsysAssetTypes.AssetTypeIcon10 As icon,
  tblState.Statename As [Asset state],
  tsysAssetTypes.AssetTypename As [Asset type],
  Coalesce(tblOperatingsystem.Caption, tblLinuxSystem.OSRelease,
  tblMacOSInfo.SystemVersion, 'other/none') As OS,
  tblAssetCustom.Manufacturer,
  tblAssetCustom.Model,
  tblAssetCustom.Serialnumber,
  tblAssetCustom.Warrantydate As [Warranty expiration],
  tblAssets.AssetName,
  tblAssets.Lastseen,
  tblAssets.Domain,
  tblADComputers.OU,
  tblAssets.IPAddress,
  tblAssets.FQDN,
  tblADComputers.Description,
  tblAssets.Memory,
  tblAssets.NrProcessors,
  tblAssets.Processor,
  tRegistry1.Value As ApplicationName,
  tRegistry2.Value As ApplicationOwner,
  tRegistry3.Value As DeptName
From tblAssets
  Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
  Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
  Left Join (Select tblAssetUserRelations.AssetID,
    tblAssetUserRelations.Username,
    tblAssetUserRelations.Userdomain
  From tblAssetUserRelations
  Where tblAssetUserRelations.Type = 1) tOwner On tblAssets.AssetID =
    tOwner.AssetID
  Inner Join tblState On tblState.State = tblAssetCustom.State
  Left Join tblOperatingsystem On tblOperatingsystem.AssetID = tblAssets.AssetID
  Left Join tblLinuxSystem On tblAssets.AssetID = tblLinuxSystem.AssetID
  Left Join tblMacOSInfo On tblAssets.AssetID = tblMacOSInfo.AssetID
  Left Join tblADComputers On tblAssets.AssetID = tblADComputers.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\Inventory' And
    tblRegistry.Valuename = 'ApplicationName') tRegistry1 On tblAssets.AssetID =
    tRegistry1.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\Inventory' And
    tblRegistry.Valuename = 'ApplicationOwner') tRegistry2
    On tblAssets.AssetID = tRegistry2.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\Inventory' And
    tblRegistry.Valuename = 'DeptName') tRegistry3 On tblAssets.AssetID =
    tRegistry3.AssetID
Where tblAssetCustom.State = 1
polingkyle
#2polingkyle Member Original PosterPosts: 8  
posted: 7/17/2015 3:11:24 PM(UTC)
That was exactly what I needed! Thank you so much!
Apaulcolypse
#3Apaulcolypse Member Posts: 33  
posted: 7/22/2021 9:26:43 PM(UTC)
is there a way to add the Software and software version to this?
In addition to the registry keys, for my need I'm looking to also have the name of software and version of that software. I am able to have that as a separate report but would like them on the same one to easily distinguish the correct variables to use in the registry.

This is how I converted the report you placed.

Code:

Select Top 1000000 tblAssets.AssetID,
  tblAssets.AssetName,
  tsysAssetTypes.AssetTypeIcon10 As icon,
  tblAssets.IPAddress,
  tsysOS.OSname,
  tblADusers.Firstname,
  tblADusers.Lastname,
  tblAssets.Lastseen,
  tRegistry1.Value As JAVA_HOME,
  tRegistry2.Value As JAVA_TOOL_OPTIONS,
  tRegistry3.Value As PATH
From tblAssets
  Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
  Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
  Left Join (Select tblAssetUserRelations.AssetID,
      tblAssetUserRelations.Username,
      tblAssetUserRelations.Userdomain
    From tblAssetUserRelations
    Where tblAssetUserRelations.Type = 1) tOwner On tblAssets.AssetID =
      tOwner.AssetID
  Inner Join tblState On tblState.State = tblAssetCustom.State
  Left Join tblADComputers On tblAssets.AssetID = tblADComputers.AssetID
  Left Join (Select tblRegistry.AssetID,
      tblRegistry.Value
    From tblRegistry
    Where
      tblRegistry.Regkey Like
      'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' And tblRegistry.Valuename = 'JAVA_HOME') tRegistry1 On tblAssets.AssetID = tRegistry1.AssetID
  Left Join (Select tblRegistry.AssetID,
      tblRegistry.Value
    From tblRegistry
    Where
      tblRegistry.Regkey Like
      'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' And tblRegistry.Valuename = 'JAVA_TOOL_OPTIONS') tRegistry2 On tblAssets.AssetID = tRegistry2.AssetID
  Left Join (Select tblRegistry.AssetID,
      tblRegistry.Value
    From tblRegistry
    Where
      tblRegistry.Regkey Like
      'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' And tblRegistry.Valuename = 'PATH') tRegistry3 On tblAssets.AssetID = tRegistry3.AssetID
  Inner Join lansweeperdb.dbo.tsysOS On tsysOS.OScode = tblAssets.OScode
  Inner Join lansweeperdb.dbo.tblADusers On tblADusers.Username =
      tblAssets.Username
Where tsysAssetTypes.AssetTypename = 'Windows' And tblAssetCustom.State = 1




This is what I had for a report for the software that I want to merge into the report above:

Code:

Select Top 1000000 tblAssets.AssetID,
  tblAssets.AssetName,
  tblAssets.Username,
  tblADusers.Firstname,
  tblADusers.Lastname,
  tsysAssetTypes.AssetTypeIcon10 As icon,
  tblAssets.IPAddress,
  tsysIPLocations.IPLocation,
  tsysOS.OSname As OS,
  Case
    When tblSoftware.softwareVersion >= '8.0.1810.13' Then 'Up to date'
    Else 'Out of date'
  End As [Patch Status],
  tblSoftware.softwareVersion As Version,
  tblSoftwareUni.softwareName As Software,
  tblSoftwareUni.SoftwarePublisher As Publisher,
  tblAssetCustom.Manufacturer,
  tblAssetCustom.Model,
  tblAssets.Lastseen,
  tblAssets.Lasttried,
  Case
    When tblSoftware.softwareVersion < '8.0.1810.13' Then '#ffadad'
    Else '#d4f4be'
  End As backgroundcolor
From tblAssets
  Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
  Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
  Inner Join tsysIPLocations On tsysIPLocations.LocationID =
      tblAssets.LocationID
  Inner Join tblState On tblState.State = tblAssetCustom.State
  Inner Join tblSoftware On tblAssets.AssetID = tblSoftware.AssetID
  Inner Join tblSoftwareUni On tblSoftwareUni.SoftID = tblSoftware.softID
  Left Join tsysOS On tsysOS.OScode = tblAssets.OScode
  Inner Join tblADusers On tblADusers.Username = tblAssets.Username
Where tblSoftwareUni.softwareName Like '%Java%' And tblState.Statename =
  'Active'
Order By Version







Originally Posted by: Daniel.B Go to Quoted Post
If you would like to list all assets, even if they don't have data stored for this registry value, you need to use a subquery and make Left Join to it. If additionally you want to put all the values into one row of your report, you could use multiple subqueries, one for each value. Please find a modified report below which lists 3 of the values.
Code:

Select Top 1000000 tblAssets.AssetID,
  tsysAssetTypes.AssetTypeIcon10 As icon,
  tblState.Statename As [Asset state],
  tsysAssetTypes.AssetTypename As [Asset type],
  Coalesce(tblOperatingsystem.Caption, tblLinuxSystem.OSRelease,
  tblMacOSInfo.SystemVersion, 'other/none') As OS,
  tblAssetCustom.Manufacturer,
  tblAssetCustom.Model,
  tblAssetCustom.Serialnumber,
  tblAssetCustom.Warrantydate As [Warranty expiration],
  tblAssets.AssetName,
  tblAssets.Lastseen,
  tblAssets.Domain,
  tblADComputers.OU,
  tblAssets.IPAddress,
  tblAssets.FQDN,
  tblADComputers.Description,
  tblAssets.Memory,
  tblAssets.NrProcessors,
  tblAssets.Processor,
  tRegistry1.Value As ApplicationName,
  tRegistry2.Value As ApplicationOwner,
  tRegistry3.Value As DeptName
From tblAssets
  Inner Join tblAssetCustom On tblAssets.AssetID = tblAssetCustom.AssetID
  Inner Join tsysAssetTypes On tsysAssetTypes.AssetType = tblAssets.Assettype
  Left Join (Select tblAssetUserRelations.AssetID,
    tblAssetUserRelations.Username,
    tblAssetUserRelations.Userdomain
  From tblAssetUserRelations
  Where tblAssetUserRelations.Type = 1) tOwner On tblAssets.AssetID =
    tOwner.AssetID
  Inner Join tblState On tblState.State = tblAssetCustom.State
  Left Join tblOperatingsystem On tblOperatingsystem.AssetID = tblAssets.AssetID
  Left Join tblLinuxSystem On tblAssets.AssetID = tblLinuxSystem.AssetID
  Left Join tblMacOSInfo On tblAssets.AssetID = tblMacOSInfo.AssetID
  Left Join tblADComputers On tblAssets.AssetID = tblADComputers.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\Inventory' And
    tblRegistry.Valuename = 'ApplicationName') tRegistry1 On tblAssets.AssetID =
    tRegistry1.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\Inventory' And
    tblRegistry.Valuename = 'ApplicationOwner') tRegistry2
    On tblAssets.AssetID = tRegistry2.AssetID
  Left Join (Select tblRegistry.AssetID,
    tblRegistry.Value
  From tblRegistry
  Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\Inventory' And
    tblRegistry.Valuename = 'DeptName') tRegistry3 On tblAssets.AssetID =
    tRegistry3.AssetID
Where tblAssetCustom.State = 1


Active Discussions

Lansweeper Scan User Exclusion / Define User OU for active scanning
by  Almada   Go to last post Go to first unread
Last post: Yesterday at 6:43:34 PM(UTC)
Lansweeper sqlServerId is changing
by  Ciro Bizelli  
Go to last post Go to first unread
Last post: Yesterday at 3:40:34 PM(UTC)
Lansweeper Slow Loading Lansweeper
by  Maikel Vanroelen   Go to last post Go to first unread
Last post: Yesterday at 9:25:31 AM(UTC)
Lansweeper Sync information
by  Jay-IT  
Go to last post Go to first unread
Last post: 9/16/2021 9:20:11 PM(UTC)
Lansweeper "Unknown" exclusion does not exclude Unknown assets
by  Almada   Go to last post Go to first unread
Last post: 9/16/2021 7:18:43 PM(UTC)
Lansweeper multiple scanning servers with granular permission
by  FrankSc  
Go to last post Go to first unread
Last post: 9/16/2021 6:29:54 PM(UTC)
Lansweeper Separate helpdesk websites?
by  JCochran   Go to last post Go to first unread
Last post: 9/15/2021 2:51:03 PM(UTC)
Lansweeper Remove Ads
by  FrankSc  
Go to last post Go to first unread
Last post: 9/15/2021 12:30:18 PM(UTC)