Scripts/Get-DigitalOceanDroplet.ps1
function Get-DigitalOceanDroplet { [CmdletBinding(DefaultParameterSetName='Default')] param ( # Parameter help description [Parameter(Mandatory=$true)] [string] $Token, # Parameter help description [Parameter(Mandatory=$false,ParameterSetName='ID')] [int] $Id, # Parameter help description [Parameter(Mandatory=$false,ParameterSetName='Paging')] [int] $Page, # Parameter help description [Parameter(Mandatory=$false,ParameterSetName='Paging')] [int] $PerPage ) begin { } process { $uri = "droplets" if($PSCmdlet.ParameterSetName -eq 'ID'){ $uri += "/$Id" } $query = @{} if($PSCmdlet.ParameterSetName -eq 'Paging') { if ($Page -gt 0) { $query.page = $Page } if ($PerPage -gt 0) { $query.per_page = $PerPage } if($query.Count -gt 0) { $uri += '?' + (($query.Keys | ForEach-Object { [uri]::EscapeDataString($_) + '=' + [uri]::EscapeDataString($query.$_) }) -join '&') } } $response = Invoke-DigitalOceanApiCall -Token $Token -Url $uri if($PSCmdlet.ParameterSetName -eq 'ID'){ $response.droplet | ConvertTo-DigitalOceanDroplet } else { $droplets = $response.droplets | ConvertTo-DigitalOceanDroplet $properties = @{ Droplets = $droplets TotalCount = $response.meta.total } New-Object PSObject -Property $properties } } end { } } |