Created
July 4, 2016 06:45
-
-
Save rheid/6b21e60760d781763aa97c37186f356a to your computer and use it in GitHub Desktop.
Copy SharePoint List Item
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Remove-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue | |
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue | |
try | |
{ | |
$srcListSiteUrl = "https://sp.bizerba.com/sites/27261" | |
$SourceListName = "SiteMetadataPublic" | |
$dstListSiteUrl = "https://sp.bizerba.com/sites/27261" | |
$DestinationListName = "SiteMetadata" | |
$keyColumnInternalName = "Title" | |
$sourceListWeb = Get-SPWeb -identity $srcListSiteUrl | |
$sourceListUrl = $sourceListWeb.ServerRelativeUrl + "/lists/" + $SourceListName; | |
$dstListWeb = Get-SPWeb -identity $dstListSiteUrl | |
$destinationListUrl = $dstListWeb.ServerRelativeUrl + "/lists/" + $DestinationListName; | |
$SourceList = $sourceListWeb.GetList($sourceListUrl); | |
$DestinationList = $dstListWeb.GetList($destinationListUrl); | |
$sourceSPListItemCollection = $SourceList.GetItems(); | |
foreach($srcListItem in $sourceSPListItemCollection) | |
{ | |
#CAML query of the common column (generally the title column or any unique column) | |
$keyValue = $srcListItem[$keyColumnInternalName] | |
$camlQuery = | |
"<Where> | |
<Eq> | |
<FieldRef Name=" + $keyColumnInternalName + " /> | |
<Value Type='Text'>" + $keyValue + "</Value> | |
</Eq> | |
</Where>" | |
$spQuery = new-object Microsoft.SharePoint.SPQuery | |
$spQuery.Query = $camlQuery | |
$spQuery.RowLimit = 1 | |
#check if the item is already present in destination list | |
$destItemCollection = $DestinationList.GetItems($spQuery) | |
if($destItemCollection.Count -gt 0) | |
{ | |
write-host "list item already exists, updating " | |
foreach($dstListItem in $destItemCollection) | |
{ | |
foreach($spField in $dstListItem.Fields) | |
{ | |
if ($spField.ReadOnlyField -ne $True -and $spField.InternalName -ne "Attachments") | |
{ | |
$dstListItem[$spField.InternalName] = $srcListItem[$spField.InternalName]; | |
} | |
} | |
# Handle Attachments | |
foreach($leafName in $srcListItem.Attachments) | |
{ | |
$spFile = $SourceList.ParentWeb.GetFile($srcListItem.Attachments.UrlPrefix + $leafName) | |
$dstListItem.Attachments.Add($leafName, $spFile.OpenBinary()); | |
} | |
$dstListItem.Update() | |
} | |
} | |
else | |
{ | |
write-host "adding new item" | |
$newSPListItem = $DestinationList.AddItem(); | |
foreach($spField in $srcListItem.Fields) | |
{ | |
if ($spField.ReadOnlyField -ne $True -and $spField.InternalName -ne "Attachments") | |
{ | |
$newSPListItem[$spField.InternalName] = $srcListItem[$spField.InternalName]; | |
} | |
} | |
# Handle Attachments | |
foreach($leafName in $srcListItem.Attachments) | |
{ | |
$spFile = $SourceList.ParentWeb.GetFile($srcListItem.Attachments.UrlPrefix + $leafName) | |
$newSPListItem.Attachments.Add($leafName, $spFile.OpenBinary()); | |
} | |
$newSPListItem.Update() | |
} | |
} | |
} | |
catch | |
{ | |
write-host $_.exception | |
} | |
finally | |
{ | |
if($sourceListWeb -ne $null){$sourceListWeb.Dispose()} | |
if($dstListWeb -ne $null){$dstListWeb.Dispose()} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment