Public/BCDR_BCDR.ps1
function Get-DattoBCDR { <# .SYNOPSIS Gets Datto BCDR devices and assets .DESCRIPTION The Get-DattoBCDR cmdlet gets Datto BCDR devices and assets by combing all endpoints into a single command. This unique function does not contain any Reporting or SaaS endpoints. This function was added to simply testing & generating reports .PARAMETER endpoint_Agents Returns a list of BCDR clients and the agents under those clients As of 2022-04 this endpoint always returns no data Endpoint = /bcdr/agent .PARAMETER endpoint_Devices Returns a list of BCDR devices registered under your portal Endpoint = /bcdr/device .PARAMETER endpoint_byDevice Returns a single BCDR device registered under your portal Endpoint = /bcdr/device/{serialNumber} .PARAMETER endpoint_byDeviceAgent Returns a list BCDR agents from a given device Endpoint = /bcdr/device/{serialNumber}/asset/agent .PARAMETER endpoint_byDeviceAlert Returns a list BCDR alerts from a given device Endpoint = /bcdr/device/{serialNumber}/alert .PARAMETER endpoint_byDeviceAsset Returns a list BCDR agents & shares from a given device Endpoint = /bcdr/device/{serialNumber}/asset .PARAMETER endpoint_byDeviceShare Returns a list BCDR shares from a given device Endpoint = /bcdr/device/{serialNumber}/asset/share .PARAMETER endpoint_byDeviceVolume Returns a list BCDR volumes from a given device Endpoint = /bcdr/device/{serialNumber}/asset/volume .PARAMETER serialNumber Defines the BCDR serial number to get information from The parameter is mandatory if you want to get a specific device. .PARAMETER showHiddenDevices Whether hidden devices should be included in your results Acceptable values are: '0', '1' By default '1' is returned by the API which shows hidden devices. .PARAMETER showChildResellerDevices Whether child reseller devices should be included in your results Acceptable values are: '0', '1' By default '1' is returned by the API which shows child reseller devices. .PARAMETER volumeName Gets an asset(s)(agent or share) for a specific volume on a device .PARAMETER page Defines the page number to return The default value is 1 .PARAMETER perPage Defines the amount of items to return with each page The default value is 100 .PARAMETER allPages Returns all items from an endpoint When using this parameter there is no need to use either the page or perPage parameters .EXAMPLE Get-DattoBCDR Gets the first 100 Datto BCDR devices This function uses the -endpoint_Devices switch by default .EXAMPLE Get-DattoBCDR -endpoint_Agents -serialNumber '12345678' Returns a list of BCDR clients and the agents under those clients As of 2022-04 this endpoint always returns no data .EXAMPLE Get-DattoBCDR -endpoint_byDevice -serialNumber '12345678' Returns a single BCDR device registered under your portal .EXAMPLE Get-DattoBCDR -endpoint_byDeviceAgent -serialNumber '12345678' Returns a list BCDR agents from a given device .EXAMPLE Get-DattoBCDR -endpoint_byDeviceAlert -serialNumber '12345678' Returns a list BCDR alerts from a given device .EXAMPLE Get-DattoBCDR -endpoint_byDeviceAsset -serialNumber '12345678' Returns a list BCDR agents & shares from a given device .EXAMPLE Get-DattoBCDR -endpoint_byDeviceShare -serialNumber '12345678' Returns a list BCDR shares from a given device .EXAMPLE Get-DattoBCDR -endpoint_byDeviceVolume -serialNumber '12345678' Returns a list BCDR volumes from a given device .NOTES N\A .LINK https://celerium.github.io/Datto-PowerShellWrapper/site/BCDR/Get-DattoBCDR.html #> [CmdletBinding(DefaultParameterSetName = 'index_Devices')] Param ( [Parameter(Mandatory = $true, ParameterSetName = 'index_Agents')] [switch]$endpoint_Agents, [Parameter(Mandatory = $false, ParameterSetName = 'index_Devices')] [switch]$endpoint_Devices, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDevice')] [switch]$endpoint_byDevice, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDeviceAgent')] [switch]$endpoint_byDeviceAgent, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDeviceAlert')] [switch]$endpoint_byDeviceAlert, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDeviceAsset')] [switch]$endpoint_byDeviceAsset, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDeviceShare')] [switch]$endpoint_byDeviceShare, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDeviceVolume')] [switch]$endpoint_byDeviceVolume, [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'index_byDevice' )] [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'index_byDeviceAgent' )] [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'index_byDeviceAlert' )] [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'index_byDeviceAsset' )] [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'index_byDeviceShare' )] [Parameter(Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = 'index_byDeviceVolume' )] [ValidateNotNullOrEmpty()] [string]$serialNumber, [Parameter(Mandatory = $false, ParameterSetName = 'index_Devices')] [ValidateSet('0','1')] [string]$showHiddenDevices, [Parameter(Mandatory = $false, ParameterSetName = 'index_Devices')] [ValidateSet('0','1')] [string]$showChildResellerDevices, [Parameter(Mandatory = $true, ParameterSetName = 'index_byDeviceVolume')] [ValidateNotNullOrEmpty()] [string]$volumeName, [Parameter(Mandatory = $false, ParameterSetName = 'index_Agents' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_Devices' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAgent' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAlert' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAsset' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceShare' )] [ValidateRange(1, [Int64]::MaxValue)] [Int64]$page = 1, [Parameter(Mandatory = $false, ParameterSetName = 'index_Agents' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_Devices' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAgent' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAlert' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAsset' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceShare' )] [ValidateRange(1, [Int64]::MaxValue)] [Int64]$perPage = 100, [Parameter(Mandatory = $false, ParameterSetName = 'index_Agents' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_Devices' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAgent' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAlert' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceAsset' )] [Parameter(Mandatory = $false, ParameterSetName = 'index_byDeviceShare' )] [Switch]$allPages ) begin{ switch ($PSCmdlet.ParameterSetName) { 'index_Agents' { $resource_uri = "/bcdr/agent" } 'index_Devices' { $resource_uri = "/bcdr/device" } 'index_byDevice' { $resource_uri = "/bcdr/device/$serialNumber" } 'index_byDeviceAgent' { $resource_uri = "/bcdr/device/$serialNumber/asset/agent" } 'index_byDeviceAlert' { $resource_uri = "/bcdr/device/$serialNumber/alert" } 'index_byDeviceAsset' { $resource_uri = "/bcdr/device/$serialNumber/asset" } 'index_byDeviceShare' { $resource_uri = "/bcdr/device/$serialNumber/asset/share" } 'index_byDeviceVolume' { $resource_uri = "/bcdr/device/$serialNumber/asset/$volumeName" } } } process{ Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet" if (($PSCmdlet.ParameterSetName -eq 'index_Agents') -or ($PSCmdlet.ParameterSetName -eq 'index_Devices') -or ($PSCmdlet.ParameterSetName -eq 'index_byDeviceAgent') -or ($PSCmdlet.ParameterSetName -eq 'index_byDeviceAlert') -or ($PSCmdlet.ParameterSetName -eq 'index_byDeviceAsset') -or ($PSCmdlet.ParameterSetName -eq 'index_byDeviceShare')) { #Add default PSBoundParameters if( -not $PSBoundParameters.ContainsKey('page') ) { $PSBoundParameters._page = 1 } else { $PSBoundParameters._page = $page } if( -not $PSBoundParameters.ContainsKey('perPage') ) { $PSBoundParameters._perPage = 100 } else { $PSBoundParameters._perPage = $perPage } } Set-Variable -Name 'Datto_bcdrParameters' -Value $PSBoundParameters -Scope Global -Force switch ($allPages) { $true { Invoke-ApiRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages } $false { Invoke-ApiRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters } } } end{} } |