It’s not often I come across soemthing brand new in PowerShell but yesterday when I was investigating New-CimInstance I discovered 2 cmdlets in the CimCmdlets module I hadn’t noticed before. These are:
Export-BinaryMiLog
Import-BinaryMiLog
The cmdlets are used to export, or import, CIM instances as a binary encoded file. Think of them as Export-Clixml and Import-Clixml but for CIM instances.
Their usage is very simple:
Get-CimInstance -ClassName Win32_OperatingSystem |
Export-BinaryMiLog -Path testfile.bmil
This creates a 30 KB binary file – its definitely not human readable!
You don’t need to use a bmil extension (its the one in the help file) and you can use a CIM instance object instead of the pipeline
$os = Get-CimInstance -ClassName Win32_OperatingSystem
Export-BinaryMiLog -InputObject $os -Path testfile2.stuff
Getting the data back is performed by Import-BinaryMiLog
$os1 = Import-BinaryMiLog -Path .\testfile.bmil
$os2 = Import-BinaryMiLog -Path .\testfile2.stuff
The results appear to be a standard CIM object
Compare-Object -ReferenceObject $os -DifferenceObject $os1 -IncludeEqual
Compare-Object -ReferenceObject $os -DifferenceObject $os2 -IncludeEqual
Compare-Object -ReferenceObject $os1 -DifferenceObject $os2 –IncludeEqual
These cmdlets give you way to persist CIM objects to disk so that they can be referenced at a later date. If you need to test for changes to a system this could be a useful technique
The post BinaryMiLog cmdlets appeared first on PowerShell for Windows Admins.