Quick tips about dism

Whenever I’m working on Windows 7 and Windows 2008 R2 server, I cannot leverage the new DISM PowerShell module built-in Windows 8.x and 2012 server.

The built-in command dism.exe can display packages as a list or a table.

When I’m looking for the state of a particular package, I use the Select-String cmdlet to parse the default dism output formatted as a list.
The -Context parameter allows to display the next 4 lines after it finds the matching pattern:

dism /online /get-packages | 
Select-String -Pattern "2965788" -Context 0,4

NB: sls is the alias of Select-String as of PowerShell 3.0

Yesterday, I wanted to get the list of packages sorted by their installation time.
The default format of dism.exe by list doesn’t help.
The first step was to skip the first lines of the dism output formatted in a table.
The second step consists in transforming the dism table output into objects with the ConvertFrom-Csv cmdlet.
These two steps don’t allow to sort by “Install Time” as the ‘Install Time’ is a string and not a datetime object.
The last step kills two birds with one stone. It removes the last line “The operation completed successfully” of dism.exe and converts the ‘Install Time’ values into datetime objects.

dism /online /get-packages /format:table | 
Select-Object -Skip 12 | 
ConvertFrom-Csv -Header "PackageName","State","Release Type","Install Time" -Delimiter "|" | 
foreach {
 if ($_.PackageName -notmatch "The operation completed successfully.") {
   PackageName = $_.PackageName ;
   State = $_.State ;
   Type = $_.'Release Type' ;
   'Install Time' = (Get-Date -Date $_.'Install Time') ;
} | 
Sort 'Install Time'

2 thoughts on “Quick tips about dism

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.