I have a script that is working to download files from an online SharePoint Document Library to a network drive. Now I just need to be able to delete the files that have already been downloaded from the SharePoint document library. I know I need each files site url but am unsure of how to collect it and then use remove-pnpfile. Here is my script:
#################### Parameters ###########################################
$webUrl = "https://***.sharepoint.com/teams/CPRPlusPST"
$listUrl = "Documents";
$destination = "\\cpr-appsprod\cprsql\Incoming"
$Username = "***"
$Password = "***"
#region Credentials
[securestring]$SecurePass = ConvertTo-SecureString $Password -AsPlainText -Force
[System.Management.Automation.PSCredential]$PSCredentials = New-Object System.Management.Automation.PSCredential ($Username,$SecurePass)
#endregion Credentials
Connect-PnPOnline -Url $webUrl -Credentials $PSCredentials
$web = Get-PnPWeb
$list = Get-PNPList -Identity $listUrl
function ProcessFolder ($folderUrl,$destinationFolder) {
$folder = Get-PnPFolder -RelativeUrl $folderUrl
$tempfiles = Get-PnPProperty -ClientObject $folder -Property Files
if (!(Test-Path -Path $destinationfolder)) {
$dest = New-Item $destinationfolder -Type directory
}
$total = $folder.Files.Count
for ($i = 0; $i -lt $total; $i++) {
$file = $folder.Files[$i]
Get-PnPFile -ServerRelativeUrl $file.ServerRelativeUrl -Path $destinationfolder -FileName $file.Name -AsFile -Force
Write-Host -f Green "Downloaded File:" $file.Name
***Remove-PnPFile -Force
Write-Host -f Green "Deleted File from SharePoint:" $file.Name***
}
}
function ProcessSubFolders ($folders,$currentPath) {
foreach ($folder in $folders) {
$file = $folder.Files
$tempurls = Get-PnPProperty -ClientObject $folder -Property ServerRelativeUrl
#'Signed tickets' folder only
if ($folder.Name -eq "Signed tickets") {
$targetFolder = $currentPath + "\";
ProcessFolder $folder.ServerRelativeUrl.Substring($web.ServerRelativeUrl.Length) $targetFolder
$tempfolders = Get-PnPProperty -ClientObject $folder -Property Folders
ProcessSubFolders $tempfolders $targetFolder
}
}
}
#Download root files
#ProcessFolder $listUrl $destination + "\"
#Download files in folders
$tempfolders = Get-PnPProperty -ClientObject $list.RootFolder -Property Folders
ProcessSubFolders $tempfolders $destination + "\"