2011-07-05 14 views
6

Tengo dificultades para que funcione este sencillo script de PowerShell. He buscado en Google, pero no puedo encontrar la respuesta.Coincidir con el nombre del archivo y copiarlo con PowerShell

Como puede ver, estoy especificando la ubicación de origen y destino.

La variable $ filedate hace una fecha para obtener la fecha de ayer cuando el nombre de archivo contiene la fecha.

La variable $ filter tiene la cadena en la que estoy buscando, incluida la parte de la fecha.

El comando Get-ChildItem funciona por sí mismo, pero cuando aplico el filtro no devuelve nada. ¿Qué me estoy perdiendo para que esto funcione?

$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 
+0

La conclusión más simple es que el filtro no coincide. ¿Podría editar su pregunta para agregar lo siguiente? ¿Qué es lo que realmente vale la cadena de $ filter ?, y el nombre de uno de los archivos que DEBE coincidir. –

+0

Funciona bien para mí. ¿Qué obtienes con: gci $ source "FULL_ (local) _Product_ *" –

Respuesta

13

Intente filtrar la lista de archivos mediante el uso de la Where-Object cmdlet y el operador -match:

$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 

Si todavía no estás recibiendo ningún resultado, entonces tenemos que mirar en el propio filtro.

recursos relacionados:

+0

Esto funciona - muchas gracias – mealies

+0

| Copy-Item -Destination $ destination –

Cuestiones relacionadas