Private/New-NevergreenApp.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
function New-NevergreenApp { <# .SYNOPSIS Returns a PSCustomObject to output. .DESCRIPTION Returns a PSCustomObject to output. .NOTES Site: https://packageology.com Author: Dan Gough Twitter: @packageologist .LINK https://github.com/DanGough/Nevergreen .PARAMETER Name The name of the application. .PARAMETER Uri The download URI for the application. .PARAMETER Version The application version. .PARAMETER Architecture Optional. Must match x86, x64. ARM32 or ARM64 if supplied. .PARAMETER Type Optional. Must match Msi, Exe, Zip, MSIX, AppX if supplied. .PARAMETER Language Optional. The language of the application installer, e.g. 'en'. .PARAMETER Ring Optional. The deployment ring, e.g. 'General', 'Preview'. .PARAMETER Channel Optional. The channel, e.g. 'Enterprise'. .PARAMETER Platform Optional. The platform, e.g. 'Citrix'. .EXAMPLE New-NevergreenApp -Uri 'http://somewhere.com/something.exe' -Version '1.0' -Architecture 'x64' -Type 'Exe' Description: Outputs a PSCustomObject with the chosen properties. #> [CmdletBinding(SupportsShouldProcess = $False)] param ( [Parameter( Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $Name, [Parameter( Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $Version, [Parameter( Mandatory = $true)] [ValidatePattern('^(http|https)://')] [Alias('Url')] [String] $Uri, [Parameter( Mandatory = $true)] [ValidateSet('x86', 'x64', 'ARM32', 'ARM64', 'Multi')] [String] $Architecture, [Parameter( Mandatory = $false)] [ValidateSet('Msi', 'Exe', 'Zip', 'MSIX', 'AppX')] [String] $Type, [Parameter( Mandatory = $false)] [ValidateNotNullOrEmpty()] [String] $Language, [Parameter( Mandatory = $false)] [ValidateNotNullOrEmpty()] [String] $Ring, [Parameter( Mandatory = $false)] [ValidateNotNullOrEmpty()] [String] $Channel, [Parameter( Mandatory = $false)] [ValidateNotNullOrEmpty()] [String] $Platform ) $Output = [PSCustomObject]@{ Name = $Name Version = $Version Uri = $Uri } if ($Architecture) { Add-Member -InputObject $Output -MemberType NoteProperty -Name 'Architecture' -Value $Architecture } if ($Type) { Add-Member -InputObject $Output -MemberType NoteProperty -Name 'Type' -Value $Type } if ($Language) { Add-Member -InputObject $Output -MemberType NoteProperty -Name 'Language' -Value $Language } if ($Ring) { Add-Member -InputObject $Output -MemberType NoteProperty -Name 'Ring' -Value $Ring } if ($Channel) { Add-Member -InputObject $Output -MemberType NoteProperty -Name 'Channel' -Value $Channel } if ($Platform) { Add-Member -InputObject $Output -MemberType NoteProperty -Name 'Platform' -Value $Platform } $Output } |