Private/Get-PEBuild.ps1
<#
.SYNOPSIS Gets details about all Operating Systems in PEBuilds .DESCRIPTION Gets details about all Operating Systems in OSMedia .LINK https://www.osdeploy.com/osbuilder/osmedia/Get-PEBuild #> function Get-PEBuild { [CmdletBinding()] PARAM () BEGIN { #Write-Host '========================================================================================' -ForegroundColor DarkGray #Write-Host "$($MyInvocation.MyCommand.Name) BEGIN" -ForegroundColor Green #=================================================================================================== Write-Verbose '19.1.1 Initialize OSBuilder' #=================================================================================================== Get-OSBuilder -CreatePaths -HideDetails #=================================================================================================== Write-Verbose '19.1.1 Gather All PEBuilds' #=================================================================================================== $AllPEBuilds = @() $AllPEBuilds = Get-ChildItem -Path "$OSBuilderPEBuilds" -Directory | Select-Object -Property * | Where-Object {Test-Path $(Join-Path $_.FullName "info\xml\Get-WindowsImage.xml")} $null = $PEBuilds } PROCESS { #Write-Host '========================================================================================' -ForegroundColor DarkGray #Write-Host "$($MyInvocation.MyCommand.Name) PROCESS" -ForegroundColor Green $PEBuilds = foreach ($Item in $AllPEBuilds) { #=================================================================================================== Write-Verbose '19.1.1 Get Windows Image Information' #=================================================================================================== Write-Verbose "OSMedia Full Path: $($Item.FullName)" $OSMWindowsImage = @() $OSMWindowsImage = Import-Clixml -Path "$($Item.FullName)\info\xml\Get-WindowsImage.xml" $OSMVersion = $($OSMWindowsImage.Version) Write-Verbose "Version: $OSMVersion" $OSMImageName = $($OSMWindowsImage.ImageName) Write-Verbose "ImageName: $OSMImageName" $OSMArch = $OSMWindowsImage.Architecture if ($OSMArch -eq '0') {$OSMArch = 'x86'} if ($OSMArch -eq '6') {$OSMArch = 'ia64'} if ($OSMArch -eq '9') {$OSMArch = 'x64'} if ($OSMArch -eq '12') {$OSMArch = 'x64 ARM'} Write-Verbose "Arch: $OSMArch" $OSMEditionId = $($OSMWindowsImage.EditionId) Write-Verbose "EditionId: $OSMEditionId" $OSMInstallationType = $($OSMWindowsImage.InstallationType) Write-Verbose "InstallationType: $OSMInstallationType" $OSMMajorVersion = $($OSMWindowsImage.MajorVersion) Write-Verbose "MajorVersion: $OSMMajorVersion" $OSMMinorVersion = $($OSMWindowsImage.MinorVersion) Write-Verbose "MinorVersion: $OSMMinorVersion" $OSMBuild = $($OSMWindowsImage.Build) Write-Verbose "Build: $OSMBuild" $OSMLanguages = $($OSMWindowsImage.Languages) Write-Verbose "Languages: $OSMLanguages" $OperatingSystem = '' if ($OSMMajorVersion -eq 6 -and $OSMInstallationType -eq 'Client') {$OperatingSystem = 'Windows 7'} if ($OSMMajorVersion -eq 10 -and $OSMInstallationType -eq 'Client') {$OperatingSystem = 'Windows 10'} if ($OSMMajorVersion -eq 10 -and $OSMInstallationType -eq 'Server' -and $OSMImageName -like "*2016*") {$OperatingSystem = 'Server 2016'} if ($OSMMajorVersion -eq 10 -and $OSMInstallationType -eq 'Server' -and $OSMImageName -like "*2019*") {$OperatingSystem = 'Server 2019'} $OSMUBR = $($OSMWindowsImage.UBR) Write-Verbose "UBR: $OSMUBR" #=================================================================================================== Write-Verbose '19.1.1 Gather Registry Information' #=================================================================================================== $OSMRegistry = @() if (Test-Path "$($Item.FullName)\info\xml\CurrentVersion.xml") { Write-Verbose "Registry: $($Item.FullName)\info\xml\CurrentVersion.xml" $OSMRegistry = Import-Clixml -Path "$($Item.FullName)\info\xml\CurrentVersion.xml" } else { Write-Verbose "Registry: $($Item.FullName)\info\xml\CurrentVersion.xml (Not Found)" } [string]$OSMReleaseId = $($OSMRegistry.ReleaseId) if ($OSMBuild -eq 7600) {$OSMReleaseId = 7600} if ($OSMBuild -eq 7601) {$OSMReleaseId = 7601} if ($OSMBuild -eq 10240) {$OSMReleaseId = 1507} if ($OSMBuild -eq 14393) {$OSMReleaseId = 1607} if ($OSMBuild -eq 15063) {$OSMReleaseId = 1703} if ($OSMBuild -eq 16299) {$OSMReleaseId = 1709} if ($OSMBuild -eq 17134) {$OSMReleaseId = 1803} if ($OSMBuild -eq 17763) {$OSMReleaseId = 1809} Write-Verbose "ReleaseId: $OSMReleaseId" #=================================================================================================== Write-Verbose '19.1.1 Object Properties' #=================================================================================================== $ObjectProperties = @{ MediaType = $Item.Parent Name = $Item.Name ImageName = $OSMImageName EditionId = $OSMEditionId Arch = $OSMArch ReleaseId = $OSMReleaseId Build = [string]$OSMBuild UBR = $OSMUBR FullName = $Item.FullName ModifiedTime = [datetime]$OSMWindowsImage.ModifiedTime } New-Object -TypeName PSObject -Property $ObjectProperties Write-Verbose "" } #=================================================================================================== Write-Verbose '19.1.1 Output' #=================================================================================================== $PEBuilds | Select-Object MediaType,Name,ImageName,EditionId,Arch,ReleaseId,Build,UBR,FullName,ModifiedTime } END { #Write-Host '========================================================================================' -ForegroundColor DarkGray #Write-Host "$($MyInvocation.MyCommand.Name) END" -ForegroundColor Green } } |