The following article popped-up this morning about How to extract NETBIOS name from BADMIF files on ConfigMgr 2012 using Log Parser 2.2
Hey, why would I need the old school log parser from 2005 when we have PowerShell nowadays and then another tool to manipulate the data output?
You can actually achieve this task with a PowerShell one-liner and even without having to manipulate the output.
Get-ChildItem -Path "C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\BADMIFS" -Include *.MIF -Recurse -Force -ErrorAction SilentlyContinue | ForEach-Object { try { ( Get-Content -ReadCount 1 -TotalCount 6 -Path $_.FullName -ErrorAction Stop | Select-String -Pattern "//KeyAttribute<NetBIOS\sName><(?<ComputerName>.*)>" -ErrorAction Stop ).Matches.Groups[-1].Value } catch { Write-Warning -Message "Failed" } }
If you’ve got warnings, you may also want to investigate which files caused it.
In this case, I propose the following modification of the above code to be able to catch these files.
$ConfigMgrBoxPath = "C:\Program Files\Microsoft Configuration Manager\inboxes\auth\dataldr.box\BADMIFS" Get-ChildItem -Path $ConfigMgrBoxPath -Include *.MIF -Recurse -Force -ErrorAction SilentlyContinue | ForEach-Object { $File = $_.FullName ; try { ( Get-Content -ReadCount 1 -TotalCount 6 -Path $_.FullName -ErrorAction Stop | Select-String -Pattern "//KeyAttribute<NetBIOS\sName><(?<ComputerName>.*)>" -ErrorAction Stop ).Matches.Groups[-1].Value } catch { Write-Warning -Message "Failed for $File" } }
PowerShell rocks, no doubt! 😎
Pingback: Identifying (and Counting) Computers Sending BADMIF Files - Scott’s IT Blog - Site Home - TechNet Blogs