Public/Get-DMHyperCDPSchedule.ps1
|
function Get-DMHyperCDPSchedule { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '')] [CmdletBinding(DefaultParameterSetName = 'All')] [OutputType([System.Collections.ArrayList])] param( [Parameter(ValueFromPipelineByPropertyName = $true)] [pscustomobject]$WebSession, [Parameter(ParameterSetName = 'ByName', Position = 0, Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Name, [Parameter(ParameterSetName = 'ById', Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [Alias('ScheduleId')] [ValidateNotNullOrEmpty()] [string]$Id, [Parameter(ParameterSetName = 'ByFilter', Mandatory = $true)] [ValidateSet('ID', 'NAME', 'RUNNINGSTATUS', 'HEALTHSTATUS')] [string]$Filter, [Parameter(ParameterSetName = 'ByFilter', Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$Value, [string]$VstoreId ) $session = if ($WebSession) { $WebSession } else { $script:CurrentOceanstorSession } function ConvertTo-DMScheduleObject { param($item, $session) return [OceanstorHyperCDPSchedule]::new($item, $session) } $rawSchedules = switch ($PSCmdlet.ParameterSetName) { 'ById' { $resource = "snapshot_schedule/$Id" $query = @('SCHEDULETYPE=1') if ($VstoreId) { $query += "vstoreId=$([uri]::EscapeDataString($VstoreId))" } $response = Invoke-DeviceManager -WebSession $session -Method 'GET' -Resource "$resource`?$($query -join '&')" @($response | Select-DMResponseData) } 'ByName' { $filterValue = [uri]::EscapeDataString($Name) $resource = "snapshot_schedule?SCHEDULETYPE=1&filter=NAME::$filterValue" if ($VstoreId) { $resource += "&vstoreId=$([uri]::EscapeDataString($VstoreId))" } Invoke-DMPagedRequest -WebSession $session -Resource $resource } 'ByFilter' { $filterValue = [uri]::EscapeDataString($Value) $resource = "snapshot_schedule?SCHEDULETYPE=1&filter=$Filter`::$filterValue" if ($VstoreId) { $resource += "&vstoreId=$([uri]::EscapeDataString($VstoreId))" } Invoke-DMPagedRequest -WebSession $session -Resource $resource } default { $resource = 'snapshot_schedule?SCHEDULETYPE=1' if ($VstoreId) { $resource += "&vstoreId=$([uri]::EscapeDataString($VstoreId))" } Invoke-DMPagedRequest -WebSession $session -Resource $resource } } $result = [System.Collections.ArrayList]::new() foreach ($item in @($rawSchedules)) { if ($null -ne $item) { [void]$result.Add((ConvertTo-DMScheduleObject -item $item -session $session)) } } if ($PSCmdlet.ParameterSetName -eq 'ByName') { $result = @($result | Where-Object Name -EQ $Name) } $defaultDisplaySet = 'Id', 'Name', 'Enabled', 'Target Object Type', 'Running Status', 'Health Status' $displayPropertySet = New-Object System.Management.Automation.PSPropertySet( 'DefaultDisplayPropertySet', [string[]]$defaultDisplaySet ) $standardMembers = [System.Management.Automation.PSMemberInfo[]]@($displayPropertySet) $result | ForEach-Object { $_ | Add-Member MemberSet PSStandardMembers $standardMembers -Force } return $result } Set-Alias -Name Get-DMHyperCDPSchedules -Value Get-DMHyperCDPSchedule |