Functions/Accounts/Get-PASAccountSSHKey.ps1

Function Get-PASAccountSSHKey {
    <#
.SYNOPSIS
Retrieves a private SSH key

.DESCRIPTION
Get the private SSH key value from an existing account

.PARAMETER AccountID
The ID of the account whose SSH Key will be retrieved.

.PARAMETER Reason
The reason for retrieving the private SSH key.

.PARAMETER TicketingSystem
The name of the ticketing system.

.PARAMETER TicketId
The ticket ID defined in the ticketing system.

.PARAMETER Version
The version number of the required SSH key.
If the value is left empty or the value passed does not exist,
then the current SSH key version is returned.

.PARAMETER ActionType
The action this SSH key is used for

.PARAMETER isUse
Internal parameter (for use of PSMP only)

.PARAMETER Machine
The address of the remote machine

.EXAMPLE
Get-PASAccountSSHKey -AccountId 12_3 -Reason "Some Reason"

Returns Private SSH Key associated with account 12_3

#>

    [CmdletBinding()]
    param(
        [parameter(
            Mandatory = $true,
            ValueFromPipelinebyPropertyName = $true
        )]
        [Alias("id")]
        [string]$AccountID,

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

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

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

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true
        )]
        [int]$Version,

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true
        )]
        [ValidateSet("retrieve")]
        [string]$ActionType,

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

        [parameter(
            Mandatory = $false,
            ValueFromPipelinebyPropertyName = $true
        )]
        [switch]$Machine
    )

    BEGIN {
        Assert-VersionRequirement -RequiredVersion 11.5
    }

    PROCESS {

        #Create URL for request
        $URI = "$Script:BaseURI/api/Accounts/$($AccountID | Get-EscapedString)/Secret/Retrieve"

        #Create request body
        $body = $PSBoundParameters | Get-PASParameter -ParametersToRemove AccountID | ConvertTo-Json

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

        If ($null -ne $result) {

            $result

        }
    }

    END { }

}