Поиск по сайту:

Копирование элементов списка Sharepoint в другой список с помощью Powershell и PnP


Вы можете легко копировать элементы списка Sharepoint в другой список с помощью Powershell и PnP.

Сначала установите соединение с исходным сайтом Sharepoint с помощью PnP-Online:

#Create credential object
$cred = Get-Credential

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

Получить элементы списка

Теперь нам нужно получить список элементов, которые мы хотим скопировать:

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

Скопируйте элементы в целевой список

Теперь пора скопировать данные. Сначала подключитесь к целевому сайту (если список находится на другом сайте SharePoint).

#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"
}

Несколько важных заметок (на понимание которых у меня ушло несколько часов)

В Sharepoint колонки списка могут иметь внутреннее имя, отличное от того, что вы видите при открытии Sharepoint. Чтобы получить все доступные имена списков, выполните следующую команду.

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

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

Если один из столбцов в списке содержит гиперссылку, вы можете получить содержимое из него с помощью:

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

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