Functions/Public/content-management-service/New-vRAPackage.ps1
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 } } } |