Store/Get-CredentialStore.ps1

function Get-CredentialStore {
    <#
    .SYNOPSIS
        Reads the complete content of the credential store and returns it as a new object.
 
    .DESCRIPTION
        The content is in a raw format. It means there is no transformation to the different credential types.
        You can not use the object properties to connect with remote host. Therefore please use
        Get-CredentialStoreItem.
 
    .PARAMETER Path
        Define a custom path to a shared CredentialStore.
 
    .PARAMETER Shared
        Switch to shared mode with this param. This enforces the command to work with a shared CredentialStore which
        can be decrypted across systems.
 
    .INPUTS
        [None]
 
    .OUTPUTS
        [PSObject] Returns the credential store content as PSObject.
 
    .EXAMPLE
        $CSContent = Get-CredentialStore -Path "C:\TMP\mystore.json"
 
    .NOTES
        ```
        File Name : Get-CredentialStore.ps1
        Author : Marco Blessing - marco.blessing@googlemail.com
        Requires :
        ```
    .LINK
        https://github.com/OCram85/PSCredentialStore
    #>


    [CmdletBinding(DefaultParameterSetName = "Private")]
    [OutputType("PSCredentialStore.Store")]
    param(
        [Parameter(Mandatory = $false, ParameterSetName = "Shared")]

        [string]$Path,

        [Parameter(Mandatory = $true, ParameterSetName = "Shared")]
        [switch]$Shared
    )

    begin {}

    process {
        # Set the CredentialStore for private, shared or custom mode.
        Write-Debug ("ParameterSetName: {0}" -f $PSCmdlet.ParameterSetName)
        if ($PSCmdlet.ParameterSetName -eq "Private") {
            $Path = Get-DefaultCredentialStorePath
        }
        elseif ($PSCmdlet.ParameterSetName -eq "Shared") {
            if (!($PSBoundParameters.ContainsKey('Path'))) {
                $Path = Get-DefaultCredentialStorePath -Shared
            }
        }

        if (Test-CredentialStore -Path $Path -Shared) {
            try {
                $FileContent = Get-Content -Path $Path -Raw
                $CS = ConvertFrom-Json $FileContent
                $CS.PSObject.TypeNames.Insert(0, "PSCredentialStore.Store")
                return $CS
            }
            catch [System.Exception] {
                $MessageParams = @{
                    Message     = "Unknown CredentialStore format. Invalid JSON file."
                    ErrorAction = "Stop"
                }
                Write-Error @MessageParams
            }
        }
        else {
            $MessageParams = @{
                Message     = "Could not find the CredentialStore."
                ErrorAction = "Stop"
            }
            Write-Error @MessageParams
        }
    }

    end {}

}