Try this PowerShell script.
Needs parameters:
SiteURL
ListName
SourceView
DestinationListName
TargetView
Function CopyListView()
{ Param( [Parameter(Mandatory=$true)] [string]$SiteURL, [Parameter(Mandatory=$true)] [string]$ListName, [Parameter(Mandatory=$true)] [string]$SourceView, [Parameter(Mandatory=$true)] [string]$DestinationListName, [Parameter(Mandatory=$true)] [string]$TargetView )
###Get Source List and View
$site = Get-SPSite $SiteURL
$web = $site.openweb()
$list=$web.lists[$ListName]
$view = $list.Views[$SourceView]
###Get Target List
$destinationlist = $web.lists[$DestinationListName]
#Copy the source view
if($view -ne $null)
{
#Get View Fields from Source List
$Viewfields = $list.Views[$SourceView].ViewFields.ToStringCollection()
$viewRowLimit="30"
$viewPaged=$true
$viewDefaultView=$false
$viewQuery="<Where><Eq><FieldRef Name='Document_x0020_Type' /><Value Type='Choice'>Customer Reconciliation</Value></Eq></Where>"
#Crete new view on destination List
$newview = $destinationlist.Views.Add($TargetView, $viewFields, $viewQuery, $viewRowLimit, $viewPaged, $viewDefaultView)
# Console output
write-host "View $($SourceView) Copied Successfully!" -foregroundcolor green
}
else
{
write-host "Could Not find: $($SourceView)!" -foregroundcolor red
}
$web.Dispose()
$site.Dispose()
}
If this helps, vote appreciated!