How to Create Custom Inventory Rules That Inventory Internet Explorer 9 and 10

Today I will be showing how to use simple custom inventory rules to inventory Internet Explorer 9 and 10 on Windows 7 x64 machines.  You might wonder how this could be useful.

The purpose behind creating these custom inventory rules is simple. Microsoft has changed how Internet Explorer is integrated into the operating system causing IE 9 and IE 10 to not show up in inventory.

Prerequisites:

  • Windows 7 x64
  • Machines with IE9 or IE10
  • K1000 with 5.4 (Might work with older versions)

There are several ways to identify the browser version but I chose to locate a certain Registry Key value.


Step 1:

Locate a Registry Key Value that changes from version to version but the path remains the same.


Step 2:

Create a New Software Item


Step 3:

Fill out the Necessary Fields

Custom Inventory Rule for IE 9

Here is the text for the custom inventory rule that inventories Internet Explorer 9

RegistryValueGreaterThan(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer, svcUpdateVersion, 9) AND

RegistryValueLessThan(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer, svcUpdateVersion, 10)

Custom Inventory Rule for IE 10

Here is the text for the custom inventory rule that inventories Internet Explorer 10

RegistryValueGreaterThan(HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer, svcUpdateVersion, 10

Now as machines begin to inventory they will be running this custom inventory rule.  If the machines meet the requirements set by the rule, they will be counted as installed on that machine!

If this article helps you, please comment and rate this article!

Have a great day and happy kboxing!

Bonus!

There are orange question marks everywhere on the kbox giving you helpful hints.  Here are some acceptable commands for custom inventory rules.

GENERAL INFORMATION
The use of the Custom Inventory Rules is very powerful and you should read the documentation before attempting to configure one of these rules. There are a variety of concerns that should be reviewed before enabling this. The notes here are meant only as a quick syntax reference for the available functions.

FUNCTION SYNTAX
Windows (* = 5.2+)
|  Linux
|  | Mac OS 
|  | |   
W  L M - DirectoryExists(path)
W  L M - FileExists(path)
W* L M - FileExistsWithMD5(path, value)

W      - FileVersionEquals(path, version)
W      - FileVersionLessThan(path, version) 
W      - FileVersionGreaterThan(path, version) 

W      - ProductVersionEquals(path, version) 
W      - ProductVersionLessThan(path, version) 
W      - ProductVersionGreaterThan(path, version) 

W  L M - FileInfoGreaterThan(fullpath, attribute, type, value)
W  L M - FileInfoLessThan(fullpath, attribute, type, value)
W  L M - FileInfoEquals(fullpath, attribute, type, value)

W      - RegistryKeyExists(registryPath) 
W      - RegistryValueEquals(registryPath, valueName, value) 
W      - RegistryValueLessThan(registryPath, valueName, value) 
W      - RegistryValueGreaterThan(registryPath, valueName, value) 

W  L M - EnvironmentVariableExists(var)
W* L M - EnvironmentVariableGreaterThan(var, type, value)
W* L M - EnvironmentVariableLessThan(var, type, value)
W* L M - EnvironmentVariableEquals(var, type, value)

W  L M - FilenamesMatchingRegexExist(fullpath,regex)
W  L M - FilenamesMatchingRegexGreaterThan(fullpath,regex,value)
W  L M - FilenamesMatchingRegexLessThan(fullpath,regex,value)
W  L M - FilenamesMatchingRegexEqual(fullpath,regex,value)

     M - PlistValueExists(fullpath, entry)
     M - PlistValueGreaterThan(fullpath, entry, type, value)
     M - PlistValueLessThan(fullpath, entry, type, value)
     M - PlistValueEquals(fullpath, entry, type, value)

W      - RegistryValueReturn(registryPath, name, type) 
W* L M - EnvironmentVariableReturn(var, type)
W  L M - FileInfoReturn(path, attribute, type) 
W* L M - FilenamesMatchingRegexReturn (fullpath, regex, type)  
W  L M - ShellCommandTextReturn(command)
W  L M - ShellCommandDateReturn(command)
W  L M - ShellCommandNumberReturn(command)
     M - PlistValueReturn(fullpath, entry, type)
ARGUMENT NOTES

type can be TEXT, NUMBER, or DATE
attribute on Windows can be: Comments, Language, CompanyName, LegalCopyright, FileBuildPart, LegalTrademarks, FileDescription, OriginalFilename, FileMajorPart, PrivateBuild, FileMinorPart, ProductBuildPart, FileName, ProductMajorPart, FilePrivatePart, ProductMinorPart, FileVersion, ProductName, InternalName, ProductPrivatePart, ProductVersion, SpecialBuild, CreatedDate, ModifiedDate, AccessedDate
attribute on UNIX/OS X can be: device_number, inode, number_links, owner, group, size, access_time, modification_time, creation_time, block_size, blocks

EXAMPLES
FileExists(C:\WINDOWS\notepad.exe)
ShellCommandTextReturn(cmd /c type c:\WINDOWS\win.ini)
FileVersionEquals(C:\Program Files\Internet Explorer\iexplore.exe,8.00.6001.18702 (longhorn_ie8_rtm(wmbla).090308-0339)) 
RegistryValueEquals(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion,CSDVersion,Service Pack 2) 
FileExists(/bin/cp)
FileInfoReturn(/etc/hosts, modification_time, DATE)