Functions/Reports/Get-PASReportTask.ps1
|
# .ExternalHelp psPAS-help.xml function Get-PASReportTask { [CmdletBinding(DefaultParameterSetName = 'byQuery')] param( [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'byID' )] [string]$id, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'byQuery' )] [ValidateLength(1, 500)] [string]$search, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'byQuery' )] [string]$subType, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'byQuery' )] [string]$name, [parameter( Mandatory = $false, ValueFromPipelineByPropertyName = $false, ParameterSetName = 'byQuery' )] [ValidateSet('AND', 'OR')] [string]$FilterLogicalOperator = 'AND', [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'byQuery' )] [int]$limit ) begin { Assert-VersionRequirement -RequiredVersion 14.6 #Parameter names which are used to build the structured filter expression, not sent as-is #Only these fields are accepted by the API's filter parameter, and only with the EQ operator $Parameters = [Collections.Generic.List[String]]@( 'subType', 'name' ) } process { if ($PSCmdlet.ParameterSetName -eq 'byID') { #Create URL for Request $URI = "$($psPASSession.BaseURI)/API/Tasks/$($id | Get-EscapedString)" #Send request to web service $result = Invoke-PASRestMethod -Uri $URI -Method GET if ($null -ne $result) { #Return result $result | Add-ObjectDetail -TypeName psPAS.CyberArk.Vault.Task } } else { if ($PSBoundParameters.ContainsKey('search') -or ($Parameters | Where-Object { $PSBoundParameters.ContainsKey($PSItem) })) { #search/filter query parameters require a later version than the base endpoint Assert-VersionRequirement -RequiredVersion 15.0 } #Create URL for Request $BaseURI = "$($psPASSession.BaseURI)/API/Tasks" #Get Parameters to include in request $boundParameters = $PSBoundParameters | Get-PASParameter -ParametersToRemove ($Parameters + @('FilterLogicalOperator')) #Get parameters to build the structured filter expression from $filterParameters = $PSBoundParameters | Get-PASParameter -ParametersToKeep $Parameters $FilterString = $filterParameters | ConvertTo-StructuredFilterString -LogicalOperator $FilterLogicalOperator if ($null -ne $FilterString) { $boundParameters = $boundParameters + $FilterString } #Create Query String, escaped for inclusion in request URL $queryString = $boundParameters | ConvertTo-QueryString $URI = $BaseURI if ($null -ne $queryString) { #Build URL from base URL $URI = "$URI`?$queryString" } #Send request to web service $result = Invoke-PASRestMethod -Uri $URI -Method GET if ($null -ne $result) { #API only provides a totalCount value; page via Get-NextLink's offset support $Tasks = $result | Get-NextLink -RequestUri $URI if ($null -ne $Tasks) { #Return result $Tasks | Add-ObjectDetail -TypeName psPAS.CyberArk.Vault.Task } } } } end {} } |