SharePoint Online: PowerShell para recorrer todos los archivos en una biblioteca de documentos
Requisito: Obtener una lista de archivos en una biblioteca de documentos de SharePoint Online mediante PowerShell.
SharePoint Online PowerShell para recorrer todos los archivos en una biblioteca de documentos:
A menudo, en las secuencias de comandos de PowerShell, es posible que tengamos que recorrer cada archivo en una biblioteca de SharePoint Online. Esta publicación de blog le mostrará cómo usar PowerShell para recorrer todos los archivos en una biblioteca de documentos. Esto puede resultar útil si necesita realizar alguna operación o recopilar datos de todos los archivos de la biblioteca, o si desea obtener una lista de todos los archivos de la biblioteca.
Aquí está el PowerShell para recorrer cada carpeta de la biblioteca y enumera todos los archivos:
#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 to get all files of a folder
Function Get-FilesFromFolder([Microsoft.SharePoint.Client.Folder]$Folder)
{
Write-host -f Yellow "Processing Folder:"$Folder.ServerRelativeUrl
#Get All Files of the Folder
$Ctx.load($Folder.files)
$Ctx.ExecuteQuery()
#list all files in Folder
ForEach ($File in $Folder.files)
{
#Get the File Name or do something
Write-host -f Magenta $File.Name
}
#Recursively Call the function to get files of all folders
$Ctx.load($Folder.Folders)
$Ctx.ExecuteQuery()
#Exclude "Forms" system folder and iterate through each folder
ForEach($SubFolder in $Folder.Folders | Where {$_.Name -ne "Forms"})
{
Get-FilesFromFolder -Folder $SubFolder
}
}
#powershell list files in sharepoint online library
Function Get-SPODocLibraryFiles()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [string] $LibraryName
)
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 Library and Its Root Folder
$Library=$Ctx.web.Lists.GetByTitle($LibraryName)
$Ctx.Load($Library)
$Ctx.Load($Library.RootFolder)
$Ctx.ExecuteQuery()
#Call the function to get Files of the Root Folder
Get-FilesFromFolder -Folder $Library.RootFolder
}
Catch {
write-host -f Red "Error Getting Files from Library!" $_.Exception.Message
}
}
#Config Parameters
$SiteURL= "https://crescent.sharepoint.com"
$LibraryName="Project Docs"
#Call the function to Get All Files from a document library
Get-SPODocLibraryFiles -SiteURL $SiteURL -LibraryName $LibraryName
SharePoint Online PowerShell para enumerar todos los documentos:
PnP PowerShell para recorrer todos los archivos y carpetas de una biblioteca de documentos
Recorramos cada carpeta y obtengamos archivos de una biblioteca determinada con PnP PowerShell:
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ListName = "Documents"
$FolderSiteRelativeUrl = "/shared documents"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Function to get all files from a folder
Function Get-SPOFilesFromFolder
{
[cmdletbinding()]
param
(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)][Microsoft.SharePoint.Client.Folder]$Folder
)
Write-host "$($Folder.Name) ($($Folder.ServerRelativeUrl))" -f Yellow
#Get Sub-folders of the folder
Get-PnPProperty -ClientObject $Folder -Property ServerRelativeUrl, Folders | Out-Null
#calculate the FolderSiteRelativeUrl of the Folder
If($Web.ServerRelativeUrl -eq "/")
{
$FolderSiteRelativeUrl = $Folder.ServerRelativeUrl
}
Else
{
$FolderSiteRelativeUrl= $Folder.ServerRelativeUrl.Replace($Web.ServerRelativeUrl,'')
}
#Get All Files of the Folder
$Files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeUrl -ItemType File
$Files | ForEach-Object {
Write-Host "`t$($_.Name)"
}
#Process all Sub-folders - Exclude "Forms" and Hidden folders
ForEach($SubFolder in $Folder.Folders | Where {($_.Name -ne "Forms") -and (-Not($Folder.Name.StartsWith("_")))})
{
Get-SPOFilesFromFolder -Folder $SubFolder
}
}
$Web = Get-PnPWeb
$Library = Get-PnPList -Identity $ListName -Includes RootFolder
Get-SPOFilesFromFolder $Library.RootFolder
Si desea obtener todos los archivos de una biblioteca de documentos de SharePoint Online, use: PowerShell para obtener todos los archivos de una biblioteca de documentos de SharePoint Online
