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 $credListe öğ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']
}