Functions/LDAPDirectories/Get-PASDirectory.ps1

function Get-PASDirectory {
    <#
.SYNOPSIS
Get LDAP directories configured in the Vault

.DESCRIPTION
Returns a list of existing directories in the Vault.
Each directory will be returned with its own data.
Membership of the Vault Admins group required.

.PARAMETER id
The ID or Name of the directory to return information on.
Requires CyberArk version 10.5+

.EXAMPLE
Get-PASDirectory

Returns LDAP directories configured in the Vault

.INPUTS
WebSession & BaseURI can be piped to the function by propertyname

.OUTPUTS
LDAP Directory Details

.LINK
https://pspas.pspete.dev/commands/Get-PASDirectory
#>

    [CmdletBinding()]
    param(
        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "v10_5"
        )]
        [Alias("DomainName")]
        [string]$id

    )

    BEGIN {
        $MinimumVersion = [System.Version]"10.4"
        $RequiredVersion = [System.Version]"10.5"
    }#begin

    PROCESS {

        Assert-VersionRequirement -ExternalVersion $Script:ExternalVersion -RequiredVersion $MinimumVersion

        #Create URL for request
        $URI = "$Script:BaseURI/api/Configuration/LDAP/Directories"

        if ($PSCmdlet.ParameterSetName -eq "v10_5") {

            Assert-VersionRequirement -ExternalVersion $Script:ExternalVersion -RequiredVersion $RequiredVersion

            #Update URL for request
            $URI = "$URI/$id/"

            $type = "psPAS.CyberArk.Vault.Directory.Extended"

        }
        Else { $type = "psPAS.CyberArk.Vault.Directory" }

        #send request to web service
        $result = Invoke-PASRestMethod -Uri $URI -Method GET -WebSession $Script:WebSession

        If ($result) {

            #Return Results
            $result |

            Add-ObjectDetail -typename $type

        }

    }#process

    END { }#end
}