private/Get-ObjectFiles.ps1

function Get-ObjectFiles {
    param([string]$BucketPath, [string]$Key)

    $di = [System.IO.DirectoryInfo]::new($BucketPath)
    if (-not [string]::IsNullOrWhiteSpace($Key)) {
        $results = [System.Collections.ArrayList]::new()
        $target = $Key.ToLowerInvariant()
        foreach ($f in @($di.GetFiles("*.json")) + @($di.GetFiles("*.dat"))) {
            $base = [System.IO.Path]::GetFileNameWithoutExtension($f.Name)
            $baseLower = $base.ToLowerInvariant()
            if ($baseLower -eq $target -or $baseLower.StartsWith("${target}_") -or $baseLower.StartsWith("${target}.")) {
                $null = $results.Add($f)
            }
        }
        return $results.ToArray()
    }
    else {
        return @($di.GetFiles("*.json")) + @($di.GetFiles("*.dat"))
    }
}