Functions/Safes/Get-PVSafeFileCategory.ps1

Function Get-PVSafeFileCategory {

    <#
    .SYNOPSIS
    Lists all the File Categories that are available in the specified Safe

    .DESCRIPTION
    Exposes the PACLI Function: "LISTSAFEFILECATEGORIES"

    .PARAMETER safe
    The Safe where the File Categories is defined.

    .PARAMETER category
    The name of the File Category to list.

    .EXAMPLE
    Get-PVSafeFileCategory -safe ORACLE -category CISOcat1

    lists specific file category details

    .EXAMPLE
    Get-PVSafeFileCategory -safe ORACLE

    lists all file category details

    .NOTES
    AUTHOR: Pete Maan

    #>


    [CmdLetBinding()]
    param(

        [Parameter(
            Mandatory = $False,
            ValueFromPipelineByPropertyName = $True)]
        [Alias("Safename")]
        [string]$safe,

        [Parameter(
            Mandatory = $False,
            ValueFromPipelineByPropertyName = $True)]
        [string]$category
    )

    PROCESS {

        $Return = Invoke-PACLICommand $Script:PV.ClientPath LISTSAFEFILECATEGORIES "$($PSBoundParameters |
            ConvertTo-ParameterString) output (ALL,ENCLOSE)"


        #if result(s) returned
        if ($Return.StdOut) {

            #Convert Output to array
            $Results = $Return.StdOut | ConvertFrom-PacliOutput

            #loop through results
            For ($i = 0 ; $i -lt $Results.length ; $i += 7) {

                #Get Range from array
                $values = $Results[$i..($i + 7)]

                #Output Object
                [PSCustomObject] @{

                    "CategoryID"           = $values[0]
                    "CategoryName"         = $values[1]
                    "CategoryType"         = $values[2]
                    "CategoryValidValues"  = $values[3]
                    "CategoryDefaultValue" = $values[4]
                    "CategoryRequired"     = $values[5]
                    "VaultCategory"        = $values[6]

                } | Add-ObjectDetail -TypeName pacli.PoShPACLI.Safe.FileCategory

            }

        }

    }

}