Sharepoint liste öğelerini Powershell ve PnP ile başka bir listeye kopyalayın


Sharepoint liste öğelerini Powershell ve PnP ile kolayca başka bir listeye kopyalayabilirsiniz.

Öncelikle PnP-Online ile kaynak Sharepoint sitesine bağlanın:

#Create credential object
$cred = Get-Credential

#Import the Skype for Business Online PS session
Connect-PnPOnline -url $siteUrl -Credentials $cred

Liste öğelerini alın

Şimdi kopyalamak istediğimiz öğelerin listesini almamız gerekiyor:

# Get source list items
$listItems = Get-PnPListItem -List 'ListName' -Fields "Project","Title","Description","Address"

Öğeleri hedef listesine kopyalayın

Şimdi verileri kopyalamanın zamanı geldi. Öncelikle hedef siteye bağlanın (liste başka bir Sharepoint sitesindeyse)

#Connect to destination site using the connector script
Connect-PnPOnline -url 'http://conto.sharepoint.com/site'

foreach($item in $listItems) {
        #Create object
	$itemVal = @{
		'ProjectName' = $item['ProjectName']
		'Title' = $item['Title']
		'Desciption' = $item['Desciption']
		'Address' = $item['Address']
	}
	Add-PnPListItem -List 'newlist' -Values $itemVal -ContentType "Item"
}

Birkaç önemli not (anlamam birkaç saatimi aldı)

Sharepoint'te liste sütunları, Sharepoint'i açtığınızda gördüğünüzden farklı bir dahili ada sahip olabilir. Mevcut tüm liste adlarını almak için aşağıdaki cmdlet'i çalıştırın

# Get all the lists from the connected Sharepoint site
Get-pnplist

# Show fields from the selected list
Get-pnpfield -list 'listname'

Listedeki sütunlardan biri bir köprü içeriyorsa, içeriği şu şekilde alabilirsiniz:

$url = $item['HyperlinkFieldName'].url
$desc = $item['HyperlinkFieldName'].description

$itemVal = @{
  'NewLinkField' = "$url, $desc"
  'Title' = $item['Title']
}

İlgili makaleler