This worked for me, you can give it a try. As an example:
$today = [datetime]::Today
@'
TransferAA_MGH_20211206070920_xlsx.XLSX
TransferBB_MGH_20211206071130_xlsx.XLSX
TransferAA_MGH_20211205070920_xlsx.XLSX
TransferBB_MGH_20211205071130_xlsx.XLSX
TransferAA_MGH_20211204070920_xlsx.XLSX
TransferBB_MGH_20211204071130_xlsx.XLSX
'@ -split '\r?\n' | Where-Object {
[datetime]::ParseExact(
[regex]::Match($_, '\d{14}').Value,
'yyyyMMddHHmmss',
[cultureinfo]::InvariantCulture
).Date -eq $today
}
# Results:
TransferAA_MGH_20211206070920_xlsx.XLSX
TransferBB_MGH_20211206071130_xlsx.XLSX
So, your search would look like this:
# This filter seem to work OK while testing
Get-ChildItem -Path . -Filter '*_*_??????????????_????.xlsx'
# So:
$today = [datetime]::Today
Get-ChildItem -Path 'path/to/TestFolder' -Filter '*_*_??????????????_????.xlsx' |
Where-Object {
[datetime]::ParseExact(
[regex]::Match($_.BaseName, '\d{14}').Value,
'yyyyMMddHHmmss',
[cultureinfo]::InvariantCulture
).Date -eq $today
}
If you want the filter to be even more restrictive you could use:
-Filter 'Transfer??_MGH_??????????????_xlsx.xlsx'