Public/Get-EvergreenAppFromLibrary.ps1
function Get-EvergreenAppFromLibrary { <# .EXTERNALHELP Evergreen-help.xml #> [OutputType([System.Management.Automation.PSObject])] [Alias("Get-EvergreenLibraryApp")] [CmdletBinding(SupportsShouldProcess = $false)] param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline, ValueFromPipelineByPropertyName, HelpMessage = "Pass the output from Get-EvergreenLibrary.")] [ValidateNotNullOrEmpty()] [System.Management.Automation.PSObject] $Inventory, [Parameter( Mandatory = $true, Position = 1, ValueFromPipelineByPropertyName, HelpMessage = "Specify an application name. Use Find-EvergreenApp to list supported applications.")] [ValidateNotNullOrEmpty()] [Alias("ApplicationName")] [System.String] $Name ) process { # Validate $Inventory has the required properties if ([System.Boolean]($Inventory.Inventory)) { Write-Verbose -Message "Input object has the required Inventory property." } else { throw [System.Management.Automation.PropertyNotFoundException] "Inventory does not have valid Inventory property." } # Filter the library inventory and match against $Name $Application = $Inventory.Inventory | Where-Object { $_.ApplicationName -eq $Name } if ($null -ne $Application) { Write-Verbose -Message "Filtering library inventory for '$Name'" Write-Output -InputObject ($Application.Versions | Sort-Object -Property @{ Expression = { [System.Version]$_.Version }; Descending = $true } -ErrorAction "SilentlyContinue") } else { Write-Error -Message "Cannot find an application in the library that matches '$Name'" } } } |