Functions/Requests/New-PASRequest.ps1
# .ExternalHelp psPAS-help.xml function New-PASRequest { [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'ConnectionParams')] param( [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [ValidateNotNullOrEmpty()] [string]$AccountId, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [string]$Search, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [ValidateSet('Regular', 'Recently', 'Locked', 'Favorites')] [string]$SavedFilter, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [string[]]$ExcludedEntities, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [string]$Reason, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [string]$TicketingSystemName, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [string]$TicketID, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [boolean]$MultipleAccessRequired, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [datetime]$FromDate, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [datetime]$ToDate, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkFilter' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkSearch' )] [hashtable]$AdditionalInfo, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [boolean]$UseConnect, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [string]$ConnectionComponent, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [ValidateSet('Yes', 'No')] [string]$AllowMappingLocalDrives, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [ValidateSet('Yes', 'No')] [string]$AllowConnectToConsole, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [ValidateSet('Yes', 'No')] [string]$RedirectSmartCards, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [string]$PSMRemoteMachine, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [string]$LogonDomain, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ConnectionParams' )] [ValidateSet('Yes', 'No')] [string]$AllowSelectHTML5, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'ManualParams' )] [hashtable]$ConnectionParams, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, ParameterSetName = 'BulkItems' )] [object[]]$BulkItems ) BEGIN { Assert-VersionRequirement -RequiredVersion 9.10 $Target = $PSCmdlet.ParameterSetName }#begin PROCESS { #Create URL for Request $URI = "$($psPASSession.BaseURI)/API/MyRequests" #Get all parameters that will be sent in the request $boundParameters = $PSBoundParameters | Get-PASParameter switch ($PSCmdlet.ParameterSetName) { 'BulkSearch' { #Filter Parameters for Bulk Search Request $FilterParams = @{ 'SearchParam' = $boundParameters | Get-PASParameter -ParametersToKeep Search } } 'BulkFilter' { #Filter Parameters for Saved Filter Request $FilterParams = @{ 'AccountsFilters' = $boundParameters | Get-PASParameter -ParametersToKeep SavedFilter } } { $PSItem -match 'BulkSearch|BulkFilter' } { Assert-VersionRequirement -RequiredVersion 13.2 #request for bulk search/filter request $Item = $boundParameters | Get-PASParameter -ParametersToRemove Search, SavedFilter, ExcludedEntities #Format Request $Request = @{ 'BulkFilter' = [ordered]@{ 'CommonEntityProperties' = @{ 'Operation' = 'Add' 'Item' = New-PASRequestObject @Item | ConvertTo-BulkFilterItem } 'ExcludedEntities' = $ExcludedEntities 'FilterParams' = $FilterParams } } break } 'BulkItems' { Assert-VersionRequirement -RequiredVersion 13.2 #New Bulk Item Array $Items = [Collections.Generic.List[Object]]::New() $BulkItems | ForEach-Object { #Add Operation and Item details For each Bulk Item $Items.Add( @{ 'Operation' = 'Add' 'Item' = $PSItem } ) } $Request = @{'BulkItems' = $Items } break } default { #create request object $Request = New-PASRequestObject @boundParameters $Target = $AccountId } } #Create body of request $body = $Request | ConvertTo-Json -Depth 3 if ($PSCmdlet.ShouldProcess($Target, 'Request Account Access')) { #send request to PAS web service $result = Invoke-PASRestMethod -Uri $URI -Method POST -Body $Body If ($null -ne $result) { switch ($PSCmdlet.ParameterSetName) { { $PSItem -match '^Bulk' } { [pscustomobject]@{'Id' = $result } | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Request.Bulk break } default { $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.Request break } } } } }#process END { }#end } |