Functions/Vault/Get-VaultCredential.ps1
<#
.SYNOPSIS Get the PSCredential objects from the Windows Credential Manager vault. .DESCRIPTION This cmdlet uses the native unmanaged Win32 api to retrieve all entries from the Windows Credential Manager vault. The entries are of type PSCredential. To get the full credential entries with all properties like target name, use the Get-VaultEntry cmdlet. .INPUTS None. .OUTPUTS System.Management.Automation.PSCredential. .EXAMPLE PS C:\> Get-VaultCredential -TargetName 'MyUserCred' Return the PSCredential objects with the target name 'MyUserCred'. .NOTES Author : Claudio Spizzi License : MIT License .LINK https://github.com/claudiospizzi/SecurityFever #> function Get-VaultCredential { [CmdletBinding()] [Alias('Get-VaultEntryCredential')] [OutputType([System.Management.Automation.PSCredential])] param ( # Filter the credentials by target name. Does not support wildcards. [Parameter(Mandatory = $false)] [AllowEmptyString()] [System.String] $TargetName, # Filter the credentials by type. [Parameter(Mandatory = $false)] [AllowNull()] [SecurityFever.CredentialManager.CredentialType] $Type, # Filter the credentials by persist location. [Parameter(Mandatory = $false)] [AllowNull()] [SecurityFever.CredentialManager.CredentialPersist] $Persist, # Filter the credentials by username. Does not support wildcards. [Parameter(Mandatory = $false)] [AllowEmptyString()] [System.String] $Username ) $credentialEntries = [SecurityFever.CredentialManager.CredentialStore]::GetCredentials($TargetName, $Type, $Persist, $Username) foreach ($credentialEntry in $credentialEntries) { Write-Output $credentialEntry.Credential } } |