Functions/Public/content-management-service/New-vRAPackage.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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
function New-vRAPackage { <# .SYNOPSIS Create a vRA Content Package .DESCRIPTION Create a vRA Package .PARAMETER Name Content Package Name .PARAMETER Description Content Package Description .PARAMETER Id A list of content Ids to include in the Package .PARAMETER ContentName A list of content names to include in the Package .PARAMETER JSON Body text to send in JSON format .INPUTS System.String. .OUTPUTS System.Management.Automation.PSObject .EXAMPLE New-vRAPackage -Name Package01 -Description "This is Content Package 01" -Id "58e10956-172a-48f6-9373-932f99eab37a","0c74b085-dbc1-4fea-9cbf-a1601f668a1f" .EXAMPLE New-vRAPackage -Name Package01 -Description "This is Content Package 01" -ContentName "Blueprint01","Blueprint02" .EXAMPLE Get-vRAContent | New-vRAPackage -Name Package01 - Description "This is Content Package 01" .EXAMPLE $JSON = @" { "name":"Package01", "description":"This is Content Package 01", "contents":[ "58e10956-172a-48f6-9373-932f99eab37a","0c74b085-dbc1-4fea-9cbf-a1601f668a1f" ] } "@ $JSON | New-vRAPackage #> [CmdletBinding(SupportsShouldProcess,ConfirmImpact="Low",DefaultParameterSetName="ById")][OutputType('System.Management.Automation.PSObject')] Param ( [Parameter(Mandatory=$true,ParameterSetName="ById")] [parameter(Mandatory=$true,ParameterSetName="ByName")] [ValidateNotNullOrEmpty()] [String]$Name, [Parameter(Mandatory=$false)] [ValidateNotNullOrEmpty()] [String]$Description, [Parameter(Mandatory=$true,ParameterSetName="ById", ValueFromPipelineByPropertyName=$true)] [ValidateNotNullOrEmpty()] [Alias("ContentId")] [String[]]$Id, [Parameter(Mandatory=$true,ParameterSetName="ByName")] [ValidateNotNullOrEmpty()] [String[]]$ContentName, [Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName="JSON")] [ValidateNotNullOrEmpty()] [String]$JSON ) begin { xRequires -Version 7.0 $Object = [PSCustomObject] @{ name = $Name description = $Description contents = @() } } process { switch ($PsCmdlet.ParameterSetName) { "ById" { foreach ($CId in $Id) { Write-Verbose -Message "Adding content with id $($CId) to package" $Object.contents += $CId } break } "ByName" { foreach ($CName in $ContentName) { Write-Verbose -Message "Adding content with id $($CName) to package" $Id = (Get-vRAContent -Name $CName).Id $Object.contents += $Id } break } "JSON" { $Data = ($JSON | ConvertFrom-Json) $Body = $JSON $Name = $Data.name break } } } end { # --- Convert PSCustomObject to a string $Body = $Object | ConvertTo-Json if ($PSCmdlet.ShouldProcess($Name)){ $URI = "/content-management-service/api/packages" # --- Run vRA REST Request Invoke-vRARestMethod -Method POST -URI $URI -Body $Body -Verbose:$VerbosePreference | Out-Null # --- Output the Successful Result Get-vRAPackage -Name $Name -Verbose:$VerbosePreference } } } |