Scripts/Get-StoredCredential.ps1

Function Get-StoredCredential {
  param(
    [Parameter(Mandatory=$false, ParameterSetName="Get")]
    [string]$UserName,
    [Parameter(Mandatory=$false, ParameterSetName="List")]
    [switch]$List
  )


  If (!(Test-Path env:StoredCredentialPath)) {
    Write-Error "env:StoredCredentialPath does not exist. Run Set-StoredCredentialPath to setup" -ErrorAction Stop
  }

  if ($List) {
    try {
    $CredentialList = @(Get-ChildItem -Path $env:StoredCredentialPath -Filter *.cred -ErrorAction STOP)

    foreach ($Cred in $CredentialList) {
        Write-Host "Username: $($Cred.BaseName)"
        }
    }
    catch {
        Write-Warning $_.Exception.Message
    }
  }

  if ($UserName) {
    if (Test-Path "$($env:StoredCredentialPath)\$($Username).cred") {
        $PwdSecureString = Get-Content "$($env:StoredCredentialPath)\$($Username).cred" | ConvertTo-SecureString
        $Credential = New-Object System.Management.Automation.PSCredential -ArgumentList $Username, $PwdSecureString
    }
    else {
        throw "Unable to locate a credential for $($Username)"
    }
    return $Credential
  }
}