This step is once again part of a bigger whole: turning your download of a Cumulative Update (CU) into an ISO image. In order to do that, I want to automate as much as possible: also the name and characteristics of the file that I’m creating. In order to do that, there is already a bunch of information that is in the naming convention that Microsoft applies to these Cumulative Updates. Remember my previous post, where I was unzipping the CU. Apparently, Microsoft puts the DVD in a zip-file, with a very specific naming convention, like “NAV.8.0.39663.BE.DVD.zip”, or “Product.majorversion.minorversion.build.country.DVD.zip”. This is interesting and useful information. So I decided to a new function that returns an object with this information. The function is called “Get-NAVCumulativeUpdateDownloadVersionInfo“. Yeah, I know, quite a long name .. I wanted to be really specific ;-).
Here is the function:
function Get-NAVCumulativeUpdateDownloadVersionInfo
{
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$true)]
[String] $SourcePath
)
Begin
{
}
Process
{
$SourcePathZip = [io.path]::ChangeExtension($SourcePath,'zip')
Rename-Item $SourcePath $SourcePathZip
$helper = New-Object -ComObject Shell.Application
$files = $helper.NameSpace($SourcePathZip).Items()
$filename = ($files | where name -like '*zip').name
$filename = [io.path]::GetFileNameWithoutExtension($filename)
if ($SourcePath -ne $SourcePathZip) {
Rename-Item $SourcePathZip $SourcePath
}
$regex = '(?<product>\w+?)\.(?<version>\d+?\.\d+?)\.(?<build>\d+?)\.(?<country>\w+?)\.DVD'
$MatchedRegEx = [regex]::Match($filename, $regex)
if (-not $MatchedRegEx.Success) {
Write-Error "$filename in $SourcePath does not match the required format to be decompiled into versioninfo."
break
}
$VersionInfo = New-Object System.Object
$VersionInfo | Add-Member -MemberType NoteProperty -Name Product -Value $MatchedRegEx.Groups.Item('product').value
$VersionInfo | Add-Member -MemberType NoteProperty -Name Version -Value $MatchedRegEx.Groups.Item('version').value
$VersionInfo | Add-Member -MemberType NoteProperty -Name Build -Value $MatchedRegEx.Groups.Item('build').value
$VersionInfo | Add-Member -MemberType NoteProperty -Name Country -Value $MatchedRegEx.Groups.Item('country').value
$VersionInfo | Add-Member -MemberType NoteProperty -Name FullVersionString -Value $filename
}
End
{
$VersionInfo
}
}
Basically, it’s going to search for the zip-file in the exe-file, and with regular expressions, it’s going to get the different tags out of it (thanks, Vjeko, for helping me with the regex :-)). Next, I build a simple object of it, and return it.
Second step in turning my download into an ISO is DONE! Up to the last step!
2 pings
[…] Continue reading » […]
[…] Get VersionInfo from the downloaded Cumulative Update file. Microsoft applies a naming convention which we can use to create some kind of versioning info. This way, I will be able to automatically create a naming convention for my resulting ISO image. To determine this “versioninfo”, I created a separate function. […]