This is what I came up with for scanning with powershell. I'm new to powershell so it might not be pretty but it works.
$hostName = hostname
$appFilePath = "C:\Windows\Temp\DLL_$hostName.csv"
$scanPath = 'C:\'
$exefile = "*.exe"
$dllFile = "*.dll"
The following creates list of all DLLs and EXEs on c$:
$dll = dir -ErrorAction SilentlyContinue -Recurse -Path $scanPath -Include @($exefile, $dllFile)
The following looks at each file to see if it references MSXML4.dll. Takes about 30 mins on my 149gb of data:
$dll | Select-String "msxml4.dll" -ErrorAction SilentlyContinue | group $($_.name) | select name | export-csv -path $appFilePath`
The output isn't formatted so you'll get something like:
C:\Windows\SysWOW64\migwiz\unbcl.dll:45:Cclass UnBCL::TimeSpan __thiscall UnBCL::TimeSpan::Add(const class UnBCL::TimeSpan &) constresult of TimeSpan additio..... and so on
unbcl.dll is on every machine I've scanned and it can be ignored. I think it's just looking for MSXML4.dll even if it's not on the machine.
You'll also get great stuff like this:
"C:\Users\USERX\Documents\Toad for Oracle 10.1 - R2 Commercial.exe:5045:File_Name=""msxml4.dll"" "