-Replace strange output

ok so i thought this would work but im getting a strange result

so i have

$DBS = Get-ChildItem "C:\ExchangeDatabases" -Recurse | where {$_.extension -eq ".db"} | select fullname

producing the below $dbs


##which looks like

#now i want to replace the ".db" with ".yes"

$output3 = foreach ($DB in $DBs)
    $log = $db -replace".db", ".yes" 

                        6 = $log


but my output shows like this


why is it replacing the “_db” in the string aswell as the “.db”, aslo i want to get rid of the @{Fullname=}

Found it

using the $ in “.db”

$log2 = $db -replace ".db$", ".yes"

Use single quotes for replacement if you haven’t plans for $variables in replace

May I suggest some changes?

$DBS = Get-ChildItem ‘c:\ExchangeDatabases’ -Filter *.db -Recurse

$output = foreach ($DB in $DBs)
‘Logfile’ = Join-Path -Path $DB.Directory -ChildPath ($DB.BaseName + “.log”)

Many thanks both for suggestions :slight_smile:

…and… ‘.’ in regex matches any symbol, if you want match only real period symbol you should use ‘.’. that the cause of you initial problem

Thanks Max, Regex is a black art :slight_smile: