mardi 9 décembre 2014

How to iterate list items from two list using where in powershell script



I have two list from where i want to collect common items. I am not able to make use of $caml in my script.


My script:



Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
[System.reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

$web = Get-SPWeb "site name"

$list = $web.Lists["listname1"]

$DeleteBeforeDate = [Microsoft.SharePoint.Utilities.SPUtility]::CreateISO8601DateTimeFromSystemDateTime([DateTime]::Now.AddDays(0))

$caml='<Where>
<And>
<Eq><FieldRef Name="Status" /><Value Type="Text">Retired</Value></Eq>
<Lt><FieldRef Name="Modified" /><Value IncludeTimeValue="TRUE"Type="DateTime">{0}</Value></Lt>
</And>
</Where> '-f $DeleteBeforeDate

$query=new-object Microsoft.SharePoint.SPQuery

$query.Query=$caml

$items=$list.GetItems($query)

Write-host "Total Number of Retired Items in listname1="$items.Count

Write-host "Item List"

foreach ($item in $items)
{
Write-host $($item.Name)

Write-host $($item.ID)

$CCLlist = $web.Lists["Listname2"]

$query1=new-object Microsoft.SharePoint.SPQuery

$items1=$CCLlist.GetItems($query1)

Write-host "Total Number of Items in Listname2 ="$items1.Count

Write-host "Item List"

$items1 | ForEach-Object {

$m=$_['File Title:ID'].split(";")

if($item.ID -eq $m[0])
{
Write-host $($item.ID)

Write-host $m[0]

Write-host $_['Name']

$Files = $CCLlist.Items | where {$item.ID -eq $m[0]}

foreach ($file in $Files)
{
if($file.Name -eq $_['Name'])

{
Write-Output "Deleting file $($file.Name)..."

$file.Delete()
}
}

}

}

}
$items | % {$list.GetItemById($_.Id).Delete()}
$web.Dispose()


Thanks,


Netra S W








0 commentaires:

Enregistrer un commentaire