Functions/User/Unblock-PASUser.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
function Unblock-PASUser {
    <#
.SYNOPSIS
Activates a suspended user

.DESCRIPTION
Activates an existing vault user who was suspended due to password
failures.

.PARAMETER id
 The user's unique ID

.PARAMETER UserName
The user's name

.PARAMETER Suspended
Suspension status

.EXAMPLE
Unblock-PASUser -UserName MrFatFingers -Suspended $false

Activates suspended vault user MrFatFingers using the Classic API

.EXAMPLE
Unblock-PASUser -UserName MrFatFingers -id 666

Activates suspended vault user MrFatFingers using the API from 10.10+

#>

    [CmdletBinding(DefaultParameterSetName = "10_10")]
    param(
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true,
            ParameterSetName = "10_10"
        )]
        [int]$id,

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

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $false,
            ParameterSetName = "ClassicAPI"
        )]
        [ValidateSet($false)]
        [boolean]$Suspended
    )

    BEGIN {
        $MinimumVersion = "10.10"

        $Request = @{"WebSession" = $Script:WebSession }

    }#begin

    PROCESS {


        If ($PSCmdlet.ParameterSetName -eq "10_10") {

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

            #Create request
            $Request["URI"] = "$Script:BaseURI/api/Users/$id/Activate"
            $Request["Method"] = "POST"

        } ElseIf ($PSCmdlet.ParameterSetName -eq "ClassicAPI") {

            #Create request
            $Request["URI"] = "$Script:BaseURI/WebServices/PIMServices.svc/Users/$($UserName | Get-EscapedString)"
            $Request["Method"] = "PUT"
            $Request["Body"] = $PSBoundParameters | Get-PASParameter -ParametersToRemove UserName | ConvertTo-Json

        }

        #send request to web service
        $result = Invoke-PASRestMethod @Request

        if ($result) {

            $result | Add-ObjectDetail -typename psPAS.CyberArk.Vault.User

        }

    }#process

    END { }#end

}