-Replace strange output

This topic contains 6 replies, has 3 voices, and was last updated by  Mark Prior 1 year, 1 month ago.

  • Author
  • #68922

    Mark Prior

    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=}

  • #68925

    Mark Prior

    Found it

    using the $ in ".db"

    $log2 = $db -replace ".db$", ".yes"
  • #68928

    Max Kozlov

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

  • #68929

    Olaf Soyk

    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")
  • #68935

    Mark Prior

    Many thanks both for suggestions 🙂

  • #68962

    Max Kozlov

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

  • #69018

    Mark Prior

    Thanks Max, Regex is a black art 🙂

You must be logged in to reply to this topic.