One limitation of SharePoint designer, is that it can only copy files from a library to another library in the same site. This does have a purpose, but this is isn't really an archiving solution.
The following code copying files (and metadata) from view in a library to another library in another site or site collection.
$web = Get-SPWeb "http://sp10/"
$listnamefrom="Testfrom"
$viewName="View1"
$listnameTo="TestTo"
$ver = $host | select version
if ($ver.Version.Major -gt 1) {$host.Runspace.ThreadOptions = "ReuseThread"}
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$web = Get-SPWeb "http://sp10/"
$listnamefrom="Testfrom"
$viewName="View1"
$listnameTo="TestTo"
$list = $web.Lists[$listnamefrom]
$view = $list.Views[$viewName]
$columns=New-Object System.Collections.ArrayList
$dlist = $web.Lists[$listnameTo]
foreach ($col in $view.ViewFields)
{
if($col -ne "DocIcon" -and $col -ne "LinkFilename" -and $col -ne "Modified" -and
$col -ne "Editor")
{
$columns.add($col)
}
}
$items = $list.GetItems($view)
#$AllFolders = $sList.Folders
$RootFolder = $list.RootFolder
$RootItems = $RootFolder.files
foreach($RootItem in $RootItems)
{
write-host $RootItem.Name
$sBytes = $RootItem.OpenBinary()
$dFile = $dList.RootFolder.Files.Add($RootItem.Name, $sBytes, $true)
#$AllFields = $RootItem.Item.Fields | ? {!($_.sealed)}
foreach($Field in $columns)
{
$dFile.AddProperty($Field, $RootItem.Properties[$Field])
}
$dFile.Update()
write-host "Updated"
}
$web.Dispose()
write-host "Done"
#$items