Functions/PolicyACL/Add-PASPolicyACL.ps1

# .ExternalHelp psPAS-help.xml
function Add-PASPolicyACL {
    [CmdletBinding()]
    param(
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true
        )]
        [ValidateNotNullOrEmpty()]
        [string]$Command,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true
        )]
        [boolean]$CommandGroup,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true
        )]
        [ValidateSet('Allow', 'Deny')]
        [string]$PermissionType,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true
        )]
        [ValidateNotNullOrEmpty()]
        [string]$PolicyId,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true
        )]
        [ValidateNotNullOrEmpty()]
        [string]$Restrictions,

        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true
        )]
        [ValidateNotNullOrEmpty()]
        [string]$UserName
    )

    BEGIN {
        Assert-VersionRequirement -SelfHosted
    }#begin

    PROCESS {

        #Create URL for request
        $URI = "$($psPASSession.BaseURI)/WebServices/PIMServices.svc/Policy/$($PolicyID |

            Get-EscapedString)/PrivilegedCommands/"


        #Create request body
        $body = $PSBoundParameters |

            Get-PASParameter -ParametersToRemove PolicyId |

            ConvertTo-Json

        #Send request to web service
        $result = Invoke-PASRestMethod -Uri $URI -Method PUT -Body $Body

        If ($null -ne $result) {

            $result.AddPolicyPrivilegedCommandResult |

                Add-ObjectDetail -typename psPAS.CyberArk.Vault.ACL.Policy

        }

    }#process

    END { }#end

}