Recherche de site Web

SharePoint Online : obtenir tous les fichiers d'un dossier à l'aide de PowerShell


Exigence : SharePoint Online PowerShell pour répertorier les fichiers dans un dossier.

PowerShell pour obtenir des fichiers à partir d'un dossier dans SharePoint Online

Avez-vous déjà eu besoin d'obtenir tous les fichiers d'un dossier dans SharePoint Online ? Peut-être que vous migrez des fichiers vers un autre emplacement et que vous devez tout récupérer du dossier. Peut-être souhaitez-vous un moyen rapide d'obtenir tous les fichiers d'un dossier donné sans parcourir chacun d'eux. Quelle que soit votre raison, PowerShell peut vous aider ! Cet article de blog vous montrera comment utiliser PowerShell pour obtenir tous les fichiers d'un dossier donné dans SharePoint Online.

Depuis le navigateur Web, utilisez le bouton « Exporter vers Excel » dans la barre d'outils pour obtenir une liste de tous les fichiers et dossiers (à partir des sous-dossiers de manière récursive !).

À l'aide de PowerShell, récupérons tous les fichiers d'un dossier de la bibliothèque de documents SharePoint Online.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

Function Get-FilesFromFolder()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $FolderURL
    )
    Try {
        #Setup Credentials to connect
        $Cred = Get-Credential
        $Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
    
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Cred

        #Get the Folder and Files
        $Folder=$Ctx.Web.GetFolderByServerRelativeUrl($FolderURL)
        $Ctx.Load($Folder)
        $Ctx.Load($Folder.Files)
        $Ctx.ExecuteQuery()

        #Iterate through each File in the folder
        Foreach($File in $Folder.Files)
        {
            #Get Name for each File
            Write-Host $File.Name
        }
    }
    Catch {
        write-host -f Red "Error Getting Files from Folder!" $_.Exception.Message
    }
}

#Set Parameter Values
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$FolderURL="/Branding/Classified/Finance Department Files"

#Call the function to get list items from folder
Get-FilesFromFolder -SiteURL $SiteURL -FolderURL $FolderURL

PnP PowerShell pour obtenir tous les fichiers d'un dossier dans SharePoint Online

Pour obtenir tous les fichiers d'un dossier de manière récursive, nous pouvons utiliser cette applet de commande PowerShell Get-PnPFolderItem :


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$FolderSiteRelativeUrl = "/Shared Documents/2017" #Folder's Site Relative Path
 
#Get Credentials to connect
$Cred = Get-Credential
 
Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Credentials $Cred
 
    #Get All Files from the Folder
    $FolderItems = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeUrl -ItemType File -Recursive
    
    Write-host "Total Number of Files in the Folder:" $FolderItems.Count
    ForEach($File in $FolderItems)
    {
        $File.Name
    }
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Ce SharePoint Online PowerShell récupère tous les fichiers du dossier. Bien que le script ci-dessus fonctionne très bien pour les bibliothèques de documents contenant <5 000 éléments, sur les bibliothèques de documents plus volumineuses, l'applet de commande PnP PowerShell Get-PnPFolderItem renvoie une erreur :

Get-PnPFolderItem : La tentative d'opération est interdite car elle dépasse le seuil d'affichage de la liste.

Ainsi, pour atténuer ce problème, nous pouvons le remplacer par la cmdlet Get-PnPListItem.


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/Marketing"
$ListName ="Branding"
$FolderServerRelativePath = "/sites/Marketing/Branding*" #Any file under the given path
  
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
 
#Get all files from folder
Get-PnPListItem -List $ListName -PageSize 2000 | Where {$_.FieldValues.FileRef -like $FolderServerRelativePath -and $_.FileSystemObjectType -eq "File" } | ForEach-Object {
   Write-host $_.FieldValues.FileRef
}

Voici un autre PowerShell pour obtenir tous les éléments d'un dossier SharePoint Online : SharePoint Online : récupérer tous les éléments d'un dossier

Questions fréquemment posées:

Comment puis-je obtenir une liste de tous les fichiers de la bibliothèque SharePoint ?

Vous pouvez obtenir une liste de tous les fichiers de la bibliothèque SharePoint de différentes manières. Une option consiste à utiliser la fonctionnalité « Exporter vers CSV » de la barre d'outils, qui renverra une liste de tous les fichiers de la bibliothèque SharePoint et de leurs emplacements sur votre serveur. Une autre méthode consiste à utiliser le script PowerShell pour récupérer une liste de tous les fichiers et dossiers d'une bibliothèque de documents SharePoint Online.
Plus d'informations : Obtenez tous les fichiers de la bibliothèque de documents SharePoint Online à l'aide de PowerShell.

Comment télécharger une bibliothèque de documents depuis SharePoint Online ?

Le moyen le plus simple de télécharger une bibliothèque de documents est la suivante : accédez à votre bibliothèque de documents SharePoint, sélectionnez tous les fichiers et dossiers, puis cliquez sur le bouton « Télécharger » dans la barre d'outils. Cela vous fournit un fichier Zip contenant tous les fichiers et dossiers de la bibliothèque de documents.
Vous pouvez également utiliser : PowerShell pour télécharger une bibliothèque de documents à partir de SharePoint Online.

Articles connexes