Functions/Platforms/Get-PASPlatform.ps1
# .ExternalHelp psPAS-help.xml function Get-PASPlatform { [CmdletBinding(DefaultParameterSetName = "targets")] param( [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "platforms" )] [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$Active, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "platforms" )] [ValidateSet("Regular", "Group")] [string]$PlatformType, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "platforms" )] [string]$Search, [parameter( Mandatory = $true, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "platform-details" )] [Alias("Name")] [string]$PlatformID, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "dependents" )] [switch]$DependentPlatform, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "groups" )] [switch]$GroupPlatform, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "rotationalGroups" )] [switch]$RotationalGroup, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [string]$SystemType, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$PeriodicVerify, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$ManualVerify, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$PeriodicChange, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$ManualChange, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$AutomaticReconcile, [parameter( Mandatory = $false, ValueFromPipelinebyPropertyName = $true, ParameterSetName = "targets" )] [boolean]$ManualReconcile ) BEGIN { }#begin PROCESS { switch ($PSCmdlet.ParameterSetName) { "platforms" { Assert-VersionRequirement -RequiredVersion 11.1 #Create request URL $URI = "$Script:BaseURI/API/Platforms" #Get Parameters to include in request $boundParameters = $PSBoundParameters | Get-PASParameter #Create Query String, escaped for inclusion in request URL $queryString = $boundParameters | ConvertTo-QueryString If ($null -ne $queryString) { #Build URL from base URL $URI = "$URI`?$queryString" } break } "platform-details" { Assert-VersionRequirement -RequiredVersion 9.10 #Create request URL $URI = "$Script:BaseURI/API/Platforms/$($PlatformID | Get-EscapedString)" break } "targets" { Assert-VersionRequirement -RequiredVersion 11.4 $URI = "$Script:BaseURI/API/Platforms/$($PSCmdlet.ParameterSetName)" #Get Parameters to include in request $boundParameters = $PSBoundParameters | Get-PASParameter $queryString = $boundParameters | ConvertTo-FilterString | ConvertTo-QueryString If ($null -ne $queryString) { $URI = "$URI`?$queryString" } break } default { Assert-VersionRequirement -RequiredVersion 11.4 $URI = "$Script:BaseURI/API/Platforms/$($PSCmdlet.ParameterSetName)" break } } #Send request to web service $result = Invoke-PASRestMethod -Uri $URI -Method GET -WebSession $Script:WebSession If ($null -ne $result) { #11.1+ returns result under "platforms" property If ($result.Platforms) { $result = $result | Select-Object -ExpandProperty Platforms switch ($PSCmdlet.ParameterSetName) { "11_1" { $result = $result | Select-Object @{ Name = 'PlatformID'; Expression = { $_.general.id } }, @{ Name = 'Active'; Expression = { $_.general.active } }, @{ Name = 'Details'; Expression = { [pscustomobject]@{ "General" = $_.general "properties" = $_.properties "linkedAccounts" = $_.linkedAccounts "credentialsManagement" = $_.credentialsManagement "sessionManagement" = $_.sessionManagement "privilegedAccessWorkflows" = $_.privilegedAccessWorkflows } } } break } "targets" { $result = $result | Select-Object PlatformID, Active, @{ Name = 'Details'; Expression = { [pscustomobject]@{ "ID" = $_.ID "Name" = $_.Name "SystemType" = $_.SystemType "AllowedSafes" = $_.AllowedSafes "CredentialsManagementPolicy" = $_.CredentialsManagementPolicy "PrivilegedAccessWorkflows" = $_.PrivilegedAccessWorkflows "PrivilegedSessionManagement" = $_.PrivilegedSessionManagement } } } break } "groups" { $result = $result | Select-Object PlatformID, Active, @{ Name = 'Details'; Expression = { [pscustomobject]@{ "ID" = $_.ID "Name" = $_.Name } } } break } "dependents" { $result = $result | Select-Object PlatformID, @{ Name = 'Details'; Expression = { [pscustomobject]@{ "ID" = $_.ID "Name" = $_.Name "NumberOfLinkedTargetPlatforms" = $_.NumberOfLinkedTargetPlatforms "CredentialsManagementPolicy" = $_.CredentialsManagementPolicy } } } break } "rotationalGroups" { $result = $result | Select-Object PlatformID, Active, @{ Name = 'Details'; Expression = { [pscustomobject]@{ "ID" = $_.ID "Name" = $_.Name "GracePeriod" = $_.GracePeriod } } } break } } } #Return Results $result | Add-ObjectDetail -typename "psPAS.CyberArk.Vault.Platform" } }#process END { }#end } |