Private/Vaults/Get-DSVaultsModern.ps1
function Get-DSVaultsModern{ <# .SYNOPSIS .DESCRIPTION .EXAMPLE .NOTES .LINK #> [CmdletBinding()] param( [ValidateSet("Name", "Description")] [string]$SortField = '', [System.Management.Automation.SwitchParameter]$Descending, [int]$PageNumber = 1, <# TODO: in an ideal world, when more than 25 records are requested, we would take care of the paging in this module. Asking for a data set in a manner that would impact the whole system negatively should be at least be frowned upon, but ideally the server would not even allow it. #> [int]$PageSize = 25 ) BEGIN { Write-Verbose '[Get-DSVaultsModern] Beginning...' $URI = "$Script:DSBaseURI/api/v3/vaults" if ([string]::IsNullOrWhiteSpace($Global:DSSessionToken)) { throw "Session does not seem authenticated, call New-DSSession." } } PROCESS { try { $nvCollection = [System.Web.HttpUtility]::ParseQueryString([string]::Empty) $nvCollection.Add('PageSize', $PageSize) $nvCollection.Add('PageNumber', $PageNumber) if (![string]::IsNullOrWhiteSpace($SortField)) { $nvCollection.Add('SortField', $SortField) #the ternary operator appeared in PS 6... keep retro compatible for now #$nvCollection.Add('SortOrder', $Descending ? -1 : 1) if ($Descending){ $nvCollection.Add('SortOrder', -1) } } $uriBuilder = [System.UriBuilder]::new($URI) $uriBuilder.Query = $nvCollection.ToString() $params = @{ Uri = $uriBuilder.ToString() Method = 'GET' } Write-Verbose "[Get-DSVaultsModern] about to call with $($params.Uri)" [ServerResponse] $response = Invoke-DS @params if ($response.isSuccess) { Write-Verbose "[Get-DSVaultsModern] returned $($response.Body.data.Length) vaults, indicating that there are $($response.Body.totalCount) in total" } If ([System.Management.Automation.ActionPreference]::SilentlyContinue -ne $DebugPreference) { Write-Debug "[Response] $($response.Body)" } return $response } catch { $exc = $_.Exception If ([System.Management.Automation.ActionPreference]::SilentlyContinue -ne $DebugPreference) { Write-Debug "[Exception] $exc" } } } END { If ($?) { Write-Verbose '[Get-DSVaultsModern] Completed Successfully.' } else { Write-Verbose '[Get-DSVaultsModern] ended with errors...' } } } |