Копирование элементов списка 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']
}