Public/Vaults/Get-DSVault.ps1
function Get-DSVault { <# .SYNOPSIS Gets a specific vault or a collection of vaults. .DESCRIPTION By default, this will return the first page containing the 25 first vaults in your Devolutions Server. You can specify if you want only one vault by ID, all of your vaults or you can also specify a page size and a page number to get paginated results. .EXAMPLE > Get-DSVault [ServerResponse]::@{ ... Body = @{ currentPage = 1 data = [object[]] #Vaults are stored in here pageSize = 25 totalCount = 100 totalPage = 3 } } .EXAMPLE > Get-DSVault -All [ServerResponse]::@{ ... Body = [object[]] #Vaults are stored in here } .EXAMPLE > Get-DSVault -PageNumber 1 -PageSize 1 [ServerResponse]::@{ ... Body = @{ currentPage = 1 data = [object[]] #Vaults are stored in here pageSize = 1 totalCount = 100 totalPage = 100 } } #> [CmdletBinding(DefaultParameterSetName = 'GetPage')] param( [Parameter(ParameterSetName = 'GetOne')] [guid]$VaultID, #= $(throw 'Vault ID cannot be null or empty. Please provide a valid vault ID or use the -All parameter.'), *Cant seem to be able to use this sort of validation when using parameters set* [Parameter(ParameterSetName = 'GetAll')] [switch]$All, [Parameter(ParameterSetName = 'GetPage')] [int]$PageSize = 25, [Parameter(ParameterSetName = 'GetPage')] [int]$PageNumber = 1 ) BEGIN { Write-Verbose '[Get-DSVault] Beginning...' if ([string]::IsNullOrWhiteSpace($Global:DSSessionToken)) { throw 'Session does not seem authenticated, call New-DSSession.' } } PROCESS { $RequestParams = @{ Uri = '' Method = 'GET' } switch ($PSCmdlet.ParameterSetName) { 'GetOne' { $RequestParams.Uri = "$Script:DSBaseURI/api/security/repositories/$VaultID" try { $res = Invoke-DS @RequestParams } catch { Write-Error $_.ErrorDetails.Message } } 'GetAll' { $RequestParams.Uri = "$Script:DSBaseURI/api/v3/vaults?pagesize=100" $AllVaults = @() try { $res = Invoke-DS @RequestParams if ($res.isSuccess) { $AllVaults += $res.Body.data for ($Page = 2; $Page -le $res.Body.totalPage; $Page++) { $RequestParams.Uri = "$Script:DSBaseURI/api/v3/vaults?pagesize=100&pagenumber=$Page" $res = Invoke-DS @RequestParams $AllVaults += if ($res.isSuccess) { $res.Body.data } } $res.Body = [PSCustomObject]@{ data = $AllVaults } $res.originalResponse = $null } } catch { Write-Error $_.ErrorDetails.Message } } 'GetPage' { $RequestParams.Uri = "$Script:DSBaseURI/api/v3/vaults?pagenumber=$PageNumber&pagesize=$PageSize" $res = Invoke-DS @RequestParams } } return $res } END { If ($res.isSuccess) { Write-Verbose '[Get-DSVault] Completed Successfully.' } else { Write-Verbose '[Get-DSVault] ended with errors...' } } } |