添付ファイルとして追加するファイルが格納されたフォルダのパスを指定して、Sharepoint カスタムリストのリストアイテムに添付ファイルを追加する方法です。
関連ページ
リストアイテムに添付ファイルを追加する
同名のファイルを添付しようとするとエラーになる為、それを考慮しています。
# 追加するファイルが格納されたフォルダ
$FolderPath = 'C:\Data'
[System.IO.FileInfo[]] $AddFiles = dir $FolderPath -Recurse -File
# リストアイテム情報取得
$ListName = 'Announcements'
$Id = 2
$item = Get-PnPListItem -List $ListName -Id $Id
$AttachmentFiles = Get-PnPProperty -ClientObject $item -Property AttachmentFiles
# 上書きするかどうか
$Overwrite = $true
if ($Overwrite) {
# 同名のファイルを削除
$AttachmentFiles | ? FileName -in $AddFiles.Name | % {
Remove-PnPFile -ServerRelativeUrl $_.ServerRelativeUrl -Force
}
# すべてのファイルを追加
$AddFiles | % {
$at = New-Object Microsoft.SharePoint.Client.AttachmentCreationInformation
$at.FileName = $_.Name
$at.ContentStream = $_.OpenRead()
$item.AttachmentFiles.Add($at)
}
} else {
# 添付ファイルに存在しないファイルのみを追加
$AddFiles | ? Name -notin $AttachmentFiles.FileName | % {
$at = New-Object Microsoft.SharePoint.Client.AttachmentCreationInformation
$at.FileName = $_.Name
$at.ContentStream = $_.OpenRead()
$item.AttachmentFiles.Add($at)
}
}
Invoke-PnPQuery