<# FPS:CONTAINERS:ALOHA-P1:DATARESOURCES:PRIVATE:GET-KPENTRY:ACTIVE
#>
function Get-KPEntry {
<#
.SYNOPSIS
Container Module: DataResources
Private CmdLet: Get-KPEntry
Dependencies: Yes
.DESCRIPTION
This function will lookup Return KeePass Entry(ies). It supports basic lookup filtering.
.USAGE
PARAMETER KeePassGroup
This is
the KeePass Group Object in which to search for entries.
PARAMETER Title
This is
a Title of one or more KeePass Entries.
PARAMETER UserName
This is
the UserName of one or more KeePass Entries.
PARAMETER KeePassUuid
Specify
the KeePass Entry Uuid for reverse lookup.
.EXAMPLE
if (Push-NeededFor Get-KPEntry)
{ . (Get-ActiveFileNm -PS1
Get-KPEntry) }
Get-KPEntry -UserName "JH.Dickey"
# This Example will return all entries that have the UserName "MyUser"
Get-KPEntry -UserName "MyUser"
This Example will return all entries that are in the
specified group.
Get-KPEntry -KeePassGroup $KpGroup
Get-KPEntry -UserName "AUserName"
.CC
[2024.12.30 JD] Original code integration to FPS
.NOTES
#>
[CmdletBinding(DefaultParameterSetName = 'None')]
[OutputType('KeePassLib.PwEntry')]
param
(
[Parameter(Position = 0, Mandatory, ParameterSetName = 'None')]
[Parameter(Position = 0, Mandatory, ParameterSetName = 'UUID')]
[Parameter(Position = 0, Mandatory, ParameterSetName = 'Group')]
[Parameter(Position = 0, Mandatory, ParameterSetName = 'Title')]
[Parameter(Position = 0, Mandatory, ParameterSetName = 'UserName')]
[Parameter(Position = 0, Mandatory, ParameterSetName = 'Password')]
[ValidateNotNullOrEmpty()]
[KeePassLib.PwDatabase] $KeePassConnection = $KpDB,
[Parameter(Position = 1, Mandatory, ParameterSetName = 'Group')]
[ValidateNotNullOrEmpty()]
[KeePassLib.PwGroup[]] $KeePassGroup,
[Parameter(Position = 1, Mandatory, ParameterSetName = 'UUID', ValueFromPipeline, ValueFromPipelineByPropertyName)]
[ValidateNotNullOrEmpty()]
[Alias('Uuid')]
[KeePassLib.PwUuid] $KeePassUuid,
[Parameter(Position = 2, ParameterSetName = 'Group')]
[Parameter(Position = 1, Mandatory, ParameterSetName = 'Title')]
[ValidateNotNullOrEmpty()]
[String] $Title,
[Parameter(Position = 3, ParameterSetName = 'Group')]
[Parameter(Position = 2, ParameterSetName = 'Title')]
[Parameter(Position = 1, Mandatory, ParameterSetName = 'UserName')]
[ValidateNotNullOrEmpty()]
[String] $UserName
)
process
{
$KeePassItems = $KeePassConnection.RootGroup.GetEntries($true)
if ($PSCmdlet.ParameterSetName -eq 'UUID') {
$KeePassItems | Where-Object {
$KeePassUuid.CompareTo($_.Uuid) -eq 0 }
} else {
## This a lame way of filtering.
if ($KeePassGroup) {
$KeePassItems = foreach($_keepassItem in $KeePassItems) {
if ($KeePassGroup.Contains($_keepassItem.ParentGroup)) { $_keepassItem }
}
}
if ($Title) {
$KeePassItems = foreach($_keepassItem in $KeePassItems) {
if ($_keepassItem.Strings.ReadSafe('Title').ToLower().Equals($Title.ToLower())) { $_keepassItem }
}
}
if ($UserName) {
$KeePassItems = foreach($_keepassItem in $KeePassItems) {
if($_keepassItem.Strings.ReadSafe('UserName').ToLower().Equals($UserName.ToLower())) { $_keepassItem }
}
}
$KeePassItems
}
}
}