I'm trying to check if file already exists in a SPO document library using PnP PowerShell command.
This is part of my PowerShell script:
Try {
#Get all Files from the source folder
$SourceFilesColl = $SourceFolder.Files
$SourceFolder.Context.Load($SourceFilesColl)
$SourceFolder.Context.ExecuteQuery()
#Iterate through each file and copy
Foreach($SourceFile in $SourceFilesColl)
{
#Get the source file
$FileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($SourceFolder.Context, $SourceFile.ServerRelativeUrl)
#Copy File to the Target location
$TargetFileURL = $TargetFolder.ServerRelativeUrl+"/"+$SourceFile.Name
Write-Host "Preparing checking file..."
$checkFile = Get-PnPFile $TargetFileURL
if($checkFile) {
write-host "File already exists." -f Green
}
else
{
write-host "File not exists." -f Red
[COPY FILE CODE HERE...]
}
}
My code is working fine for first item of the foreach
loop, but from the second iteration Get-PnPFile
runs really slow (first time it takes 1-2 seconds to run, second time it takes about 5 minutes and it seems freezed) and at the end it return that "File not exists" even if the file exists.
I've already checked PnP PowerShell releases and I have installed the latest.
I've also checked $TargetFileURL
but it has not special chars or something that could break the script. For example this is similar to the content of $TargetFileURL
variable:
1st: "/sites/intranet/docs/my document.docx"
2nd: "/sites/intranet/docs/tech document.doc"
The only big difference is the file extension. Both filenames contains white spaces.
I've also tried with the -ThrowExceptionIfFileNotFound
parameter in Get-PnPFile
command (obviously I put it in a try-catch block), but nothing changed.
Any suggestion?