Public/Get-TppObject.ps1

<#
.SYNOPSIS
Get object by path
 
.DESCRIPTION
Get object by path
 
.PARAMETER Path
The full path to the object
 
.PARAMETER TppSession
Session object created from New-TppSession method. The value defaults to the script session object $TppSession.
 
.INPUTS
Path
 
.OUTPUTS
TppObject
 
.EXAMPLE
Get-TppObject -Path '\VED\Policy\My object'
 
Get an object by full path
 
.LINK
http://venafitppps.readthedocs.io/en/latest/functions/Get-TppObject/
 
.LINK
https://github.com/gdbarron/VenafiTppPS/blob/master/VenafiTppPS/Code/Public/Get-TppObject.ps1
 
.LINK
https://docs.venafi.com/Docs/18.1SDK/TopNav/Content/SDK/WebSDK/API_Reference/r-SDK-POST-Config-enumerate.php?TocPath=REST%20API%20reference|Config%20programming%20interfaces|_____13
 
#>

function Get-TppObject {

    [CmdletBinding()]

    param (
        [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript( {
                if ( $_ | Test-TppDnPath ) {
                    $true
                }
                else {
                    throw "'$_' is not a valid DN path"
                }
            })]
        [Alias('DN')]
        [String] $Path,

        [Parameter()]
        [TppSession] $TppSession = $Script:TppSession
    )

    begin {
        $TppSession.Validate()

        $params = @{
            TppSession = $TppSession
            Method     = 'Post'
            UriLeaf    = 'config/enumerate'
            Body       = @{
                'ObjectDN' = ''
                'Pattern'  = ''
            }
        }
    }

    process {

        $params.Body.ObjectDN = Split-Path $Path -Parent
        $params.Body.Pattern = Split-Path $Path -Leaf

        $response = Invoke-TppRestMethod @params

        if ( $response.Result -eq [TppConfigResult]::Success ) {
            $objects = $response.Objects
        }
        else {
            Write-Error $response.Error
        }

        foreach ($object in $objects) {
            [TppObject] @{
                Name     = $object.Name
                TypeName = $object.TypeName
                Path     = $object.DN
                Guid     = $object.Guid
            }
        }
    }
}