Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Match file name and copy using PowerShell

I am struggling to get this simple PowerShell script to work. I have googled, but I can't find the answer.

As you can see, I am specifying the source and destination location.

The $filedate variable is doing a dateadd to get yesterdays date as the filename contains the date.

The $filter variable has the string I am searching on, including the date part.

The Get-ChildItem command works on its own, but when I apply the filter it returns nothing. What am I missing to get this to work?

$source = "C:\MSSQL.1\Backup\"
$destination = "D:\MSSQL.2\Backup\"
$filedate = (get-date).AddDays(-1).tostring('yyyyMMdd')
$filter = "FULL_(local)_Product_" + $filedate + "*"
Get-ChildItem -Path $source -filter $filter | Copy-Item -Destination $destination
like image 354
mealies Avatar asked Jul 05 '11 09:07

mealies


1 Answers

Try filtering the list of files by using the Where-Object cmdlet and the -match operator:

$source = "C:\MSSQL.1\Backup\"
$destination = "D:\MSSQL.2\Backup\"
$filedate = (Get-Date).AddDays(-1).ToString("yyyyMMdd")
$filter = "FULL_(local)_Product_$filedate"
Get-ChildItem -Path $source | Where-Object { $_.Name -match $filter } | Copy-Item -Destination $destination

If you're still not getting any results, then we need to look at the filter itself.

Related resources:

  • PowerShell Conditional Operators
like image 53
Enrico Campidoglio Avatar answered Sep 16 '22 16:09

Enrico Campidoglio