07 February 2012

The Basics of SMS/SCCM MIF files

First off, the firm I work for still uses SMS 2003. MIF files are used in both SMS and SCCM. It sucks that there is so little information about MIF files. A MIF is a data snippet file that is collected and read when the SMS/SCCM hardware inventory is run on a machine. The file contains unique data pertaining to the machine it was generated on, which is reported to SMS/SCCM. A MIF file is nothing more than a set of definitions that SMS/SCCM collects to present in the resource explorer.

MIF File Location
This MIF is placed in the %WINDIR%\SysWOW64\CCM\Inventory\noidmifs directory on a 64-bit operating system and %WINDIR%\system32\CCM\Inventory\noidmifs on a 32-bit operating system. The name of the MIF file is not important. Once you place the MIF file in the directory, the next time a hardware inventory is run on the machine, the file will be collected and removed from the directory.

Detailed Usage
A MIF has no programming dynamics in it. To successfully generate and report MIF files back to SMS/SCCM, there needs to be a script run on the machine that determines the data to report. There are two ways to generate a MIF. The first and easiest is to manually create a MIF for each possible outcome of the desired operation, thereby the script copies the pertinent MIF to the noidmifs directory for reporting. The reason you want to use the noidmif is because SMS/SCCM automatically associates the MIF with the client it was collected from if it is in this directory. IDMIF files are data files not associated with the client it was collected from. The second option is to create a MIF template. The script will perform the operation to determine the data to be reported to SMS/SCCM and then reads the contents of the MIF file to edit the attribute section, modifying the output being reported to SMS/SCCM.

Here is an example I created at the firm I work for. This MIF reports back to SMS/SCCM if the User Account Control is disabled on a machine. There can be multiple attributes reported under a single group and multiple groups reported under the component.
 Start Component  
     Name = "UAC Info"         Name of the MIF being reported  
     Start group                Group of subsections being reported to SMS/SCCM  
          Name = "UAC Info"     Name of the subsection in the Resource Explorer under Hardware  
          ID = 1               The sequential number associated with each subsection being reported  
          Class = "UACInfo"  
          Start Attribute  
               Name = "Status"    Name of the column in the subsection  
               ID = 1           Sequential number associated to each attribute being reported  
               Type = String(10)   Data type being reported  
               Value = "Disabled"  Actual data being reported  
          End Attribute  
     End group  
 End Component  

The above screenshot shows the output to SMS from the above listed MIF file


  1. Hey Mick!
    Great Post and very easy to read! Thanks! :)

  2. Hi Nick
    I'm having problems with a custom software package i've created for SCCM 2007 deployment to windows 7 clients.
    The advertisement actually runs a batch file installing several .exe and .msi files.
    Problem I'm having is the reporting back, i'm getting failure return codes due to a lack of .MIF even though the package installs correctly. After a bit of help to create a custom MIF to convince SCCM that the package has installed.