Functions/User/Add-PASGroupMember.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
function Add-PASGroupMember {
    <#
.SYNOPSIS
Adds a vault user as a group member
 
.DESCRIPTION
Adds an existing user to an existing group in the vault
 
.PARAMETER groupId
The unique ID of the group to add the member to.
Requires CyberArk version 10.6+
 
.PARAMETER memberId
The name of the user or group to add as a member.
Requires CyberArk version 10.6+
 
.PARAMETER memberType
The type of user being added to the Vault group.
Valid values: domain/vault
Requires CyberArk version 10.6+
 
.PARAMETER domainName
If memberType=domain, dns address of the domain
Requires CyberArk version 10.6+
 
.PARAMETER GroupName
The name of the user
 
.PARAMETER UserName
The name of the user
 
.EXAMPLE
Add-PASGroupMember -GroupName PVWAMonitor -UserName TargetUser
 
Adds TargetUser to PVWAMonitor group
 
.EXAMPLE
Add-PASGroupMember -GroupName PVWAMonitor -UserName TargetUser
 
Adds TargetUser to PVWAMonitor group
 
.INPUTS
All parameters can be piped by property name
 
.OUTPUTS
None
#>

    [CmdletBinding(DefaultParameterSetName = "post_10_6")]
    param(
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "post_10_6"
        )]
        [int]$groupId,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "post_10_6"
        )]
        [string]$memberId,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "post_10_6"
        )]
        [ValidateSet("domain", "vault")]
        [string]$memberType,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "post_10_6"
        )]
        [string]$domainName,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "pre_10_6"
        )]
        [string]$GroupName,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "pre_10_6"
        )]
        [string]$UserName
    )

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

    PROCESS {

        If ($PSCmdlet.ParameterSetName -eq "pre_10_6") {
            #Create URL for request
            $URI = "$Script:BaseURI/WebServices/PIMServices.svc/Groups/$($GroupName |
 
            Get-EscapedString)/Users"


        }

        ElseIf ($PSCmdlet.ParameterSetName -eq "post_10_6") {

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

            #Create URL for request
            $URI = "$Script:BaseURI/API/UserGroups/$groupId/Members"

        }

        #create request body
        $Body = $PSBoundParameters |

        Get-PASParameter -ParametersToRemove GroupName, groupId |

        ConvertTo-Json

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

        if ($result) {

            $result

        }

    }#process

    END { }#end

}