Public/Get-ALImageComp.ps1
function Get-ALImageComp { <# .SYNOPSIS Gets image composition details .DESCRIPTION Gets image composition details .PARAMETER websession Existing Webrequest session for ELM Appliance .PARAMETER id Image(template) id .PARAMETER name Image name (supports wildcard) .EXAMPLE Gets all images and layer composition Get-ALImageComp -websession $websession .EXAMPLE Gets image and layer composition based on ID Get-ALImageComp -websession $websession -id 5535 .EXAMPLE Gets image and layer composition based on name Get-ALImageComp -websession $websession -name "Windows 10" .EXAMPLE Gets image and layer composition based on name (wildcard) Get-ALImageComp -websession $websession -name "*10*" #> [cmdletbinding()] Param( [Parameter(Mandatory = $true)]$websession, [Parameter(Mandatory = $false)][string]$id, [Parameter(Mandatory = $false)][string]$name ) Begin { Write-Verbose "BEGIN: $($MyInvocation.MyCommand)" Test-ALWebsession -WebSession $websession #get images bases on params if ( -not ([string]::IsNullOrWhiteSpace($name)) -and ([string]::IsNullOrWhiteSpace($id))) { $images = Get-ALimage -websession $websession | Where-Object { $_.name -like $name } } elseif ([string]::IsNullOrWhiteSpace($name) -and (-not [string]::IsNullOrWhiteSpace($id))) { $images = Get-ALimage -websession $websession | Where-Object { $_.id -eq $id } } elseif ((-not [string]::IsNullOrWhiteSpace($name)) -and (-not [string]::IsNullOrWhiteSpace($id))) { throw "Need to use either ID or Name. Not both" return } else { $images = Get-ALimage -websession $websession } } Process { $returnimage = @() foreach ($image in $images) { $imagedetail = Get-ALimagedetail -websession $websession -id $image.id #image detail $myimage = [PSCustomObject]@{ Id = $image.id ImageId = $image.Imageid Name = $image.Name Type = $image.Type Description = $imagedetail.Description DateCreated = $image.DateCreated DateLastModified = $image.DateLastModified IsPublishable = $image.IsPublishable PlatformConnectorId = $image.PlatformConnectorId PlatformConnectorName = $image.PlatformConnectorName PlatformConnectorConfigId = $image.PlatformConnectorConfigId PlatformConnectorConfigName = $image.PlatformConnectorConfigName SysprepType = $imagedetail.SysprepType ElasticLayerMode = $imagedetail.ElasticLayerMode SizeMB = $imagedetail.LayeredImagePartitionSizeMiB } #Operating System $OS = [PSCustomObject]@{ NAME = $imagedetail.OsRev.name ID = $imagedetail.OsRev.Revisions.RevisionResult.Id IMAGEID = $imagedetail.OSrev.ImageId VersionNAME = $imagedetail.OsRev.Revisions.RevisionResult.Name Description = $imagedetail.OsRev.Revisions.RevisionResult.Description Status = $imagedetail.OsRev.Revisions.RevisionResult.Status } $myimage | Add-Member -MemberType NoteProperty -Name OSLayer -Value $OS #Platform $PL = [PSCustomObject]@{ NAME = $imagedetail.PlatformLayer.name ID = $imagedetail.PlatformLayer.Revisions.RevisionResult.Id IMAGEID = $imagedetail.PlatformLayer.ImageId VersionNAME = $imagedetail.PlatformLayer.Revisions.RevisionResult.Name Description = $imagedetail.PlatformLayer.Revisions.RevisionResult.Description Status = $imagedetail.PlatformLayer.Revisions.RevisionResult.Status } $myimage | Add-Member -MemberType NoteProperty -Name PlatformLayer -Value $PL #apps $apps = @() foreach ($app in $imagedetail.AppLayers.ApplicationLayerResult) { $appobj = [PSCustomObject]@{ NAME = $app.name ID = $app.Revisions.RevisionResult.Id ImageId = $app.ImageId Priority = $app.Priority VersionNAME = $app.Revisions.RevisionResult.Name Description = $app.Revisions.RevisionResult.Description Status = $app.Revisions.RevisionResult.Status } $apps += $appobj } $myimage | Add-Member -MemberType NoteProperty -Name AppLayer -Value $apps $returnimage += $myimage } } end { return $returnimage Write-Verbose "END: $($MyInvocation.MyCommand)" } } |