<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://myitforum.com/cs2/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Joe Funk at myITforum.com</title><subtitle type="html">&amp;quot;Just because you&amp;#39;ve always done it that way, doesn&amp;#39;t mean it&amp;#39;s not incredibly stupid......&amp;quot;</subtitle><id>http://myitforum.com/cs2/blogs/jfunk/atom.aspx</id><link rel="alternate" type="text/html" href="http://myitforum.com/cs2/blogs/jfunk/default.aspx" /><link rel="self" type="application/atom+xml" href="http://myitforum.com/cs2/blogs/jfunk/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.31113.47">Community Server</generator><updated>2008-12-11T15:30:54Z</updated><entry><title>SMS Reports - Software Install Review</title><link rel="alternate" type="text/html" href="http://myitforum.com/cs2/blogs/jfunk/archive/2008/12/18/sms-reports-software-install-review.aspx" /><id>http://myitforum.com/cs2/blogs/jfunk/archive/2008/12/18/sms-reports-software-install-review.aspx</id><published>2008-12-18T16:04:00Z</published><updated>2008-12-18T16:04:00Z</updated><content type="html">&lt;p&gt;Recently I had a request to create a &amp;#39;software install review&amp;#39; report that could minimally determine what specific software products had been installed, and where they had been installed, over the past 24 hours.&amp;nbsp; Mainly the request was made in order to audit unsupported or unauthorized software installs.&amp;nbsp; 
&lt;p&gt;Initially the efforts were focused on simply querying v_GS_INSTALLED_SOFTWARE for the value of v_GS_INSTALLED_SOFTWARE.InstallDate0 and returning only the rows in which that value fell within the past day. 
&lt;p&gt;One thing that is important to realize about v_GS_INSTALLED_SOFTWARE is that (as with all GS prefixed views) is that it only contains &amp;#39;current&amp;#39; data.&amp;nbsp; In terms of making the report as valid as possible, using only the GS view would not necessarily report about all the installs that occurred for instance if it had been uninstalled since.&amp;nbsp; It would only contain records for the software only if at the last point in time that a Hardware Inventory occurred on the client the software still was installed.&amp;nbsp; After thinking through the motive behind the request itself it was concluded that possibly a JOIN or UNION would be applicable on the v_HS_INSTALLED_SOFTWARE, however we did not want to cram them together, nor did we want two entirely separate report links (though in essence, they are in fact two separate reports one one report page). 
&lt;p&gt;What we ended up with was two basic reports: 
&lt;p&gt;&lt;strong&gt;(Custom report) Software Install review - Count, per application, of every install over past X days&lt;/strong&gt;&lt;/p&gt;
&lt;table class="" cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#39;Currently Installed - This report contains only records for software that was installed (and remains installed) within the review period&amp;nbsp; still installed when the SMS client last checked&amp;#39; AS Report &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0 AS Product, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(*) AS Count, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @days AS &amp;#39;Scope of software install review (days)&amp;#39;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_GS_INSTALLED_SOFTWARE INST&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;JOIN &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_R_System SYS ON SYS.ResourceID = INST.ResourceID&lt;br /&gt;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;WHERE &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.InstallDate0 &amp;gt;= DATEADD(dd,-(CONVERT(INT, @days)),CURRENT_TIMESTAMP) &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;GROUP BY &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;ORDER BY &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT DESC, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.Productname0 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#39;Historical - Uninstalled/Reinstalled - This report contains records of software that was installed within the review period but was since uninstalled or reinstalled&amp;#39; AS Report &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.ProductName0 AS Product, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(*) AS Count,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @days AS &amp;#39;Scope of software install review (days)&amp;#39;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_HS_INSTALLED_SOFTWARE INSTHist&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;JOIN &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_R_System SYS ON SYS.ResourceID = INSTHist.ResourceID&lt;br /&gt;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.InstallDate0 &amp;gt;= DATEADD(dd,-(CONVERT(INT, @days)),CURRENT_TIMESTAMP) &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;GROUP BY&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.ProductName0&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;ORDER BY &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT DESC,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.Productname0&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;With a prompt for number of &amp;#39;days&amp;#39;, no query.&lt;/p&gt;
&lt;p&gt;That report is in turn linked to the second report (via columns 1 and 3):&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(Custom report) Software Install review - All software installs over the past X days for a specific application&lt;/strong&gt;&lt;/p&gt;
&lt;table class="" cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt; 
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#39;Currently Installed - This report contains only records for software that was still installed when the SMS client last checked&amp;#39; as Report &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYS.Name0 AS System, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.Publisher0 AS Vendor, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0 AS Software, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductVersion0 AS &amp;#39;Software Version&amp;#39;, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.InstallSource0 AS &amp;#39;Install source location&amp;#39;, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.InstallDate0 AS &amp;#39;Date Installed&amp;#39;&lt;br /&gt;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_GS_INSTALLED_SOFTWARE INST&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;JOIN&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_R_System SYS on SYS.ResourceID = INST.ResourceID&lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.InstallDate0 &amp;gt;= dateadd(dd,-(CONVERT(int, @days)),current_timestamp) and &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0 = @software&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;ORDER BY &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYS.Name0 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#39;Historical - Uninstalled/Reinstalled - This report contains records of software that was installed within the review period but was since been uninstalled (and possibly reinstalled) as of the last point the SMS client checked&amp;#39; as Report &lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYS.Name0 as System,&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.Publisher0 as Vendor, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.ProductName0 as Software, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.ProductVersion0 as &amp;#39;Software Version&amp;#39;, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.InstallSource0 as &amp;#39;Install source location&amp;#39;, &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.InstallDate0 as &amp;#39;Date Installed&amp;#39;&lt;br /&gt;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_HS_INSTALLED_SOFTWARE INSTHist&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;JOIN&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_R_System SYS on SYS.ResourceID = INSTHist.ResourceID&lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.InstallDate0 &amp;gt;= dateadd(dd,-(CONVERT(int, @days)),current_timestamp) and &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSTHist.ProductName0 = @software&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;ORDER BY &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYS.Name0&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There are two prompts to the second report.&amp;nbsp; Again there is one for the &amp;#39;days&amp;#39; (with no SQL) and additionally one for the product name.&amp;nbsp; As you can see in the above query, we used &amp;#39;software&amp;#39; as the variable name that the product name maps to.&amp;nbsp; You can use the below SQL to generate a drop down option for the product name (software variable).&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="" cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;BEGIN&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (@__filterwildcard = &amp;#39;&amp;#39;)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT DISTINCT &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_GS_INSTALLED_SOFTWARE INST &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;ORDER BY&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;ELSE&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT DISTINCT&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0 &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v_GS_INSTALLED_SOFTWARE INST&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;WHERE&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0 like @__filterwildcard&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;ORDER BY &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INST.ProductName0&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;END&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Now it is important to note that any software that the Windows Installer is not aware of will not be included in the report.&amp;nbsp; For example Oracle Server or Client software that is installed via the &amp;quot;Universal Installer&amp;quot; (which is itself a stand alone Java based installer) does not involve the Windows Installer and hence will not show up on the report.&lt;/p&gt;
&lt;p&gt;-joe-&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=125579" width="1" height="1"&gt;</content><author><name>jfunk</name><uri>http://myitforum.com/cs2/members/jfunk.aspx</uri></author></entry><entry><title>Welcome!</title><link rel="alternate" type="text/html" href="http://myitforum.com/cs2/blogs/jfunk/archive/2008/12/11/welcome.aspx" /><id>http://myitforum.com/cs2/blogs/jfunk/archive/2008/12/11/welcome.aspx</id><published>2008-12-11T20:30:54Z</published><updated>2008-12-11T20:30:54Z</updated><content type="html">&lt;p&gt;Welcome to my blog.&lt;/p&gt; &lt;p&gt;This is my first post and I plan to make some updates very soon.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Thanks for stopping by.&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=124925" width="1" height="1"&gt;</content><author><name>jfunk</name><uri>http://myitforum.com/cs2/members/jfunk.aspx</uri></author></entry></feed>
