Functions/LDAPDirectories/Get-PASDirectoryMapping.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
function Get-PASDirectoryMapping {
    <#
.SYNOPSIS
Get directory mappings configured for a directory
 
.DESCRIPTION
Returns a list of existing directory mappings in the Vault.
Membership of the Vault Admins group required.
 
.PARAMETER DirectoryName
The ID or Name of the directory to return data on.
 
.PARAMETER MappingID
The ID or Name of the directory mapping to return information on.
 
.EXAMPLE
Get-PASDirectory | Get-PASDirectoryMapping
 
Returns LDAP directory mappings configured for each directory.
 
.EXAMPLE
Get-PASDirectoryMapping -DirectoryName SomeDir -MappingID "User_Mapping"
 
Returns information on the User_Mapping for SomeDir
 
.INPUTS
WebSession & BaseURI can be piped to the function by propertyname
 
.OUTPUTS
LDAP Directory Mapping Details
 
.LINK
https://pspas.pspete.dev/commands/Get-PASDirectoryMapping
#>

    [CmdletBinding(DefaultParameterSetName = "All")]
    param(
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "All"
        )]
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "Mapping"
        )]
        [Alias("DomainName")]
        [string]$DirectoryName,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "Mapping"
        )]
        [string]$MappingID

    )

    BEGIN {
        $MinimumVersion = [System.Version]"10.7"
    }#begin

    PROCESS {

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

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

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

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

        }

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

        If ($result) {

            #Return Results
            $result |

            Add-ObjectDetail -typename psPAS.CyberArk.Vault.Directory.Mapping

        }

    }#process

    END { }#end
}