DISM Inventory
Log In or Register to download the BES file, and more.

2 Votes

Collections (part of 1 collection)


Versioning - This is the latest version.

1DISM Inventory10/17/2012 9:31:55 AM
2DISM Inventory4/1/2013 4:10:22 PM


Calls the DISM utility present on Windows computers.

This will generate a DISM.txt file in the client path.  This file will contain the Enabled/Disabled state of all the available features.

This will also enable many of the feature on/off tasks that are included in this custom site.

This task also generates a diffDISM.txt file in the client path.  This file lists a difference between the features available and the "missing" fixlets in the site.   IE:  We can't cover every single feature the instant it comes out.  This results file is pulled into an analysis so new fixlets can be created (manually) for features we don't already have fixlets for.

Source: http://bigfix.me/features/

Property Details

TitleDISM Inventory
CategoryCommon Tasks
Download Size0
Source ID<Unspecified>
Source Severity<Unspecified>
Source Release Date10/2/2012 12:00:00 AM
KeywordsDISM file features fixlets Inventory
Added by on 4/1/2013 4:10:22 PM
Last Modified by on 4/1/2013 4:10:22 PM
Counters 12931 Views / 477 Downloads
User Rating 1 star 2 star 3 star 4 star 5 star * Average over 0 ratings. ** Log In or Register to add your rating.


Used in 364 fixlets   * Results in a true/false
Show indented relevance
(if( name of operating system starts with "Win" ) then platform id of operating system != 3 else false) AND (if exists property "in proxy agent context" then ( not in proxy agent context ) else true )
is DISM Utility Available (Relevance 248)
Used in 525 fixlets   * Results in a true/false
Show indented relevance
exists file "dism.exe" of system folder


Action 1 (default)

Action Link Click here to run a DISM inventory.
Script Type BigFix Action Script
delete __appendfile
if {version of client < "9.0"}
    appendfile "{pathname of system folder}\dism.exe" /online /get-features /format:table > "{pathname of parent folder of client}\DISM.txt"
    appendfile "{pathname of native system folder}\dism.exe" /online /get-features /format:table > "{pathname of parent folder of client}\DISM.txt"
delete __Download\dism.bat
move __appendfile __Download\dism.bat
action uses wow64 redirection {not x64 of operating system}
waithidden __Download\dism.bat
action uses wow64 redirection {x64 of operating system}
delete __appendfile
appendfile Set objFSO = CreateObject("Scripting.FileSystemObject")
appendfile subFolderName = Replace("CustomSite_{name of current site}"," ","_")
appendfile objStartFolder = "{pathname of parent folder of client folder of current site}\" & subFolderName & "\"
appendfile Set objFolder = objFSO.GetFolder(objStartFolder)
appendfile Set colFiles = objFolder.Files
appendfile Set dismFile = objFSO.OpenTextFile("{pathname of parent folder of client}\DISM.txt", 1)
appendfile Set objResults = objFSO.CreateTextFile("{pathname of parent folder of client}\diffDISM.txt", true)
appendfile headerLine1 = false
appendfile headerLine2 = false
appendfile Do Until dismFile.AtEndOfStream
appendfile     strAvailableFeature = dismFile.ReadLine
appendfile     if NOT(headerLine1) AND NOT(headerLine2) then
appendfile         if (InStr(strAvailableFeature, "----------")) then
appendfile             headerLine1 = true
appendfile         end if
appendfile     elseif (headerLine1) AND NOT(headerLine2) then
appendfile         if (InStr(strAvailableFeature, "----------")) then
appendfile             headerLine2 = true
appendfile         end if
appendfile     else
appendfile         if (InStr(strAvailableFeature, "|")) then
appendfile             s = Split(strAvailableFeature)
appendfile             strFeatureName = Trim(s(0))
appendfile             foundIt = false
appendfile             For Each objFile in colFiles
appendfile             if UCase(objFSO.GetExtensionName(objFile.name)) = "FXF" then
appendfile                 Set fixletFile = objFSO.OpenTextFile(objStartFolder & objFile.Name, 1)
appendfile                 Set objRegEx = CreateObject("VBScript.RegExp")
appendfile                 objRegEx.Pattern = strFeatureName
appendfile                 Do Until fixletFile.AtEndOfStream
appendfile                     strSearchString = fixletFile.ReadLine
appendfile                    Set colMatches = objRegEx.Execute(strSearchString)
appendfile                     If colMatches.Count > 0 Then
appendfile                         For Each strMatch in colMatches
appendfile                             FeatureString = Replace(strSearchString,objRegEx.Pattern,"")
appendfile                             foundIt = true
appendfile                             exit do
appendfile                         Next
appendfile                     End If
appendfile                 Loop    
appendfile                 fixletFile.Close
appendfile             end if
appendfile             Next
appendfile             if NOT (foundIt) then
appendfile                 objResults.WriteLine strFeatureName
appendfile             end if        
appendfile         end if
appendfile     end if
appendfile Loop
appendfile dismFile.Close
delete diffDISM.vbs
move __appendfile diffDISM.vbs
waithidden cmd /c cscript diffDISM.vbs
Success Criteria

This action will be considered successful when the following relevance clause evaluates to false:

Used in 1 fixlet and 1 analsis   * Results in a true/false
Show indented relevance
not exists file "DISM.txt" of parent folder of client

Action 2

Action Link Click here to learn more about the DISM tool.
Script Type URL

Action 3

Action Link Click here to learn more and download the latest versions of Feature Installer tasks.
Script Type URL

Action 4

Action Link Click here to review this task in the bigfix.me Content Database.
Script Type URL


Social Media:
Share this page on Yammer


Log In or Register to leave comments!
jgstew -
There may be 3rd party plugins or libraries that would work better than Disque. Not sure if either of these other 2 would work: http://www.hongkiat.com/blog/3rdparty-comment-discuss-systems-reviewed/
danielheth -
I was impressed by the Disque. I've set it up and testing it out. Still not happy about the multiple logins thing. I'll work on the commenting to see if I can make this part of the experience nicer.
jgstew -
I see what you mean by the separate user name stuff, that would be a bit of a bummer. I like the idea of Disque, and I think it gets you more than just threaded comments, but I see how the seperate accounts is more of an issue for a site like BigFix.me and less of an issue for a public blog that does not need accounts otherwise.
danielheth -
I've explored that commenting solution... Only problem I see with it is they have a completely separate username database... and they want $1000/year or $99/month to link the comments to our community username database. Not sure I like that. I don't want our users to have to keep track of more than one account to interact with our site. But like many other solutions, I just need to put some time into it and I can get similar interactivity with the only cost being my personal time.
jgstew -
Threaded comments are a plus. You might look at adding http://disqus.com/ and just replace the commenting system with that.
danielheth -
that is very helpful... thanks! On a side note, I'm going to have to add in "reply" ability to comments... so users don't get confused when threads go on like this... LOL.
jgstew -
very last paragraph of the MSDN article I just linked.
jgstew -
jgstew -
"sysnative" is from microsoft, it is inside the windows kernel I believe... some sort of special exception to WOW redirection.
jgstew -
Basically, C:\Windows\sysnative\ is a hard coded way for 32bit applications to refer to the 64bit folder, kind of like a special symbolic link that gets around redirection.
danielheth -
Is the "sysnative" of your design? or is that some 3rd party thing? I've never seen that, it's a cool work around. One note on the "native system folder", it's only supported by 9.0+ clients... Which is why I added in the if/else/endif above.
jgstew -
a similar example: http://bigfix.me/cdb/fixlet/1352
jgstew -
ah, now I see the native system folder above... that makes sense. This was my work around before that existed: http://bigfix.me/cdb/fixlet/723
danielheth -
I discovered it was a bug which has been submitted to be fixed. Turns out this functionality was a secondary to the primary purpose of that "system folder" inspector. They're wanting to go in the direction of "native" inspectors to accomplish this functionality just like the "native registry" inspector. So they've added the "native system folder" to accomplish this.
jgstew -
What is the nature of the change of wow64 redirection in v9? is there any documentation on the changes?
danielheth -
The previous task was failing due to the functionality changes to wow64 redirection in v9.
danielheth -
Turns out, in version 9, the wow64 redirection functionality has changed. Thus I needed to modify this script... http://bigfix.me/cdb/fixlet/1420 is the result of my search.