Public/Get-SDCProductInfo.ps1
|
function Get-SDCProductInfo { <# .SYNOPSIS Retrieves a list of products. .DESCRIPTION This function fetches a list of products from the endoflife.date API and returns it as a PowerShell object. Uses either the /products/{productName} endpoint to retrieve specific product information or the /products/{productName}/releases/latest endpoint to get the latest release information. .EXAMPLE Get-SDCProductList .NOTES #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$ProductName, [switch]$Latest ) if ($Latest) { $url = "https://endoflife.date/api/v1/products/$($ProductName)/releases/latest" } else { $url = "https://endoflife.date/api/v1/products/$($ProductName)" } try { $product = Invoke-RestMethod -Uri $url -ErrorAction Stop } catch { Write-Error "Failed to retrieve product information for '$ProductName'. Error: $_" return } if ($null -eq $product) { Write-Error "No product found with the name '$ProductName'." return } # Convert the product information to a PowerShell object $productReleaseInfo = [System.Collections.Generic.List[PSCustomObject]]::new() foreach($release in $product.result.releases) { $relObj = [PSCustomObject]@{ Release = $release.name Released = $release.releaseDate OutOfActiveSupport = $release.isEoas ActiveSupportEnds = $release.eoasFrom EndOfLife = $release.isEol SecuritySupportEnds = $release.eolFrom Maintained = $release.isMaintained LatestBuild = $release.latest.name LatestBuildReleaseDate = $release.latest.date LatestBuildUrl = $release.latest.link IsLts = $release.isLts LtsFromDate = $release.ltsFrom } $productReleaseInfo.Add($relObj) } Write-Verbose "Product information for '$ProductName' retrieved successfully." $productReleaseInfo } |