MIFS Gone Wild: Use PowerShell to Track Down Problem Clients

Adam Bertram

Adam Bertram

Read more posts by this author.

SCCM admins have a lot of things to worry about. Software deployments, OS imaging, patching, the tasks can sometimes feel overwhelming. Tack on client health to that list of responsibilities and you’ll seen feel like you’re going insane.

What better way to ease the burden than with PowerShell. Here’s a small script you can use to get a glimpse into hardware inventory problems.

When something goes wrong, SCCM places MIF files into the dataldr.box directory on the site server. This directory contains all kinds of different MIF files that couldn’t be committed to the database for one reason or another. The MIF files are arranged in a way that the reason they weren’t committed is the subdirectory of dataldr.box �that they’re in. I needed a way to easily query all these MIF files to figure out which clients were having problems, when the problem happened and what the problem was. This script was my answer to that.

$FolderPath = '\CONFIGMGRSERVER\f$\CM2012\inboxes\auth\dataldr.box'

## Get all of the MIF files we'll be querying
$Mifs = Get-ChildItem $FolderPath -Filter '*.mif' -Recurse

## Find all the MIF files that match the regex string '//KeyAttribute<(.*)>'
$Matches = Select-String -Path $Mifs -Pattern '//KeyAttribute<(.*)>'
foreach ($Match in $Matches) {
    $FileProps = Get-Itemproperty $Match.Path
    
    ## Output an object containing the client name, time the file was created and why the MIF wasn't committed to the DB
    [pscustomobject]@{
        'Client' = $Match.matches.groups[1].Value
        'FileCreationTime' = $FileProps.CreationTime
        'MifProblem' = $FileProps.DirectoryName | Split-Path -Leaf
    }
} 

I hope that this saves you a little bit of time tracking down client health problems in SCCM!

Subscribe to Adam the Automator

Get the latest posts delivered right to your inbox

Looks like you're offline!