SharePoint Online: PowerShell para obtener una carpeta en la biblioteca de documentos
Requisito: Obtener una carpeta en la biblioteca de documentos de SharePoint Online mediante PowerShell.
¡Aquí está mi ingeniosa colección de scripts de PowerShell para obtener una carpeta en SharePoint Online!
Obtener una carpeta en SharePoint Online usando PowerShell por URL
¿Necesita obtener una carpeta específica de su biblioteca de documentos de SharePoint Online? Quizás quieras copiar el contenido de esa carpeta en otro lugar, o quizás simplemente quieras hacer algo con una carpeta. Esta publicación le mostrará cómo usar PowerShell para obtener una carpeta de una biblioteca de documentos.
Aquí está SharePoint Online PowerShell para obtener una carpeta en la biblioteca de documentos. ¡Asegúrese de que la URL de la carpeta esté decodificada! Por ejemplo, "Shared%20Documents" debe decodificarse como "Documentos compartidos".
#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"
#Variables
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$ServerRelativeUrl= "/Sites/Marketing/Shared Documents/2017"
Try {
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the web from URL
$Web = $Ctx.web
$Ctx.Load($Web)
$Ctx.executeQuery()
#Get the Folder object by Server Relative URL
$Folder = $Web.GetFolderByServerRelativeUrl($ServerRelativeUrl)
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Get Some Folder Properties
Write-host -f Green "Total Number of Files in the Folder:"$Folder.ItemCount
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
SharePoint Online PowerShell para obtener carpetas en la biblioteca de documentos por nombre de carpeta
Para obtener una lista de carpetas de una biblioteca, use este PowerShell:
#Variables
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$LibraryName = "Documents"
$FolderName = "2017"
Try {
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the Library
$Library = $Ctx.web.Lists.GetByTitle($LibraryName)
$Folders = $Library.RootFolder.Folders
$Ctx.Load($Folders)
$Ctx.executeQuery()
#Get the Folder by Name
$Folder = $Folders | Where {$_.Name -eq $FolderName}
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Get Some Folder Properties
Write-host -f Green "Total Number of Files in the Folder:"$Folder.ItemCount
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
SharePoint Online PowerShell para enumerar todas las carpetas de una biblioteca
¿Está buscando una forma rápida y sencilla de obtener una lista de todas las carpetas de una biblioteca de documentos de SharePoint Online? Si es así, ¡PowerShell puede ayudar! Permítame mostrarle cómo usar PowerShell para obtener una lista de todas las carpetas en una biblioteca de documentos de SharePoint Online.
#sharepoint online powershell list folders
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$ListName = "Documents"
Try {
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the Library
$List = $Ctx.web.Lists.GetByTitle($ListName)
#Query to Get all Folders from the library
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml="<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='FSObjType'/><Value Type='Integer'>1</Value></Eq></Where></Query></View>"
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of Folders in List:" $ListItems.count
#Loop through each file in the library
Foreach($Item in $ListItems)
{
#Get the Folder Item
$Ctx.Load($Item.Folder)
$Ctx.ExecuteQuery()
Write-host -f Green $Item.Folder.ServerRelativeUrl
}
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
SharePoint Online PowerShell para recorrer cada carpeta de una biblioteca:
¿Qué tal recorrer todas las carpetas de una biblioteca de documentos desde PowerShell?
#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 Sub-folders of a Folder in SharePoint Online
Function Get-SPOFolders([Microsoft.SharePoint.Client.Folder]$Folder)
{
Try {
Write-host $Folder.ServerRelativeUrl
#Process all Sub Folders
$Ctx.Load($Folder.Folders)
$Ctx.ExecuteQuery()
#Iterate through each sub-folder of the folder
Foreach ($Folder in $Folder.Folders)
{
#Call the function recursively
Get-SPOFolders $Folder
}
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
}
#Variables
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$ListName = "Documents"
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the Library
$List = $Ctx.web.Lists.GetByTitle($ListName)
$Ctx.Load($List.RootFolder)
$Ctx.ExecuteQuery()
#call the function to get all folders of a document library
Get-SPOFolders $List.RootFolder
PnP PowerShell para obtener una carpeta en SharePoint Online
¡Aquí está PnP PowerShell para obtener una carpeta en la biblioteca de documentos de SharePoint! Asegúrese de tener instalado el módulo PnP PowerShell antes de ejecutar este script.
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ParentFolderURL= "/Shared Documents" #Parent Folder's Site Relative Path
$FolderName="2017"
#Get Credentials to connect
$Cred = Get-Credential
Try {
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
#Get the Folder
$Folder = Get-PnPFolderItem -FolderSiteRelativeUrl $ParentFolderURL -ItemName $FolderName
Write-host "Total Number of Items in the Folder:" $Folder.ItemCount
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
También podemos obtener una carpeta usando el cmdlet Get-PnPFolder. Aquí hay un ejemplo:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$FolderURL = "/Shared Documents/2018"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#Get the SharePoint library Folder
$Folder = Get-PnPFolder -Url $FolderURL
Obtener todas las carpetas de una biblioteca de documentos de forma recursiva
Para obtener todas las carpetas y subcarpetas de una biblioteca de documentos de forma recursiva, utilice:
#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing/2018"
$FolderURL = "/Shared Documents"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive #-Credentials (Get-Credential)
#Get all Sub-Folders of folder
Function Get-SubFolders($FolderURL)
{
#Get all sub-folders of the Folder
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL -ItemType Folder | Where {$_.Name -ne "Forms" -and $_.Name -ne "Document"}
#Loop through the folders
ForEach($SubFolder in $SubFolders)
{
$SubFolderURL = $FolderUrl+"/"+$SubFolder.Name
write-host -ForegroundColor Green $SubFolder.Name " - " $SubFolderURL
#Call the function recursively
Get-SubFolders $SubFolderURL
}
}
#Call the function with the root folder of the doc library
Get-SubFolders $FolderURL
PowerShell para obtener todas las subcarpetas de una carpeta en SharePoint Online
Para obtener todas las carpetas de una carpeta, use este PowerShell:
#Parameters
$SiteURL="https://crescent.sharepoint.com/sites/Marketing"
$FolderSiteRelativeURL = "/Branding/2020"
#Connect to the Site collection
Connect-PnPOnline -URL $SiteURL -Interactive
#Get the Folder from site relative URL
$Folder = Get-PnPFolder -Url $FolderSiteRelativeURL
#Get all Subfolders of a folder - recursively
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder -Recursive
#Get Server relative URL of all subfolders
$SubFolders | Select ServerRelativeURL
¿Qué tal obtener todas las subcarpetas de forma recursiva de una carpeta determinada?
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder -Recursive
Obtener todos los elementos de una carpeta usando PnP PowerShell:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$FolderURL= "/Shared Documents/2018" #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 Items inside the Folder
$FolderItems = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL
Write-host "Total Number of Items in the Folder:" $FolderItems.Count
ForEach($Item in $FolderItems)
{
Write-host $Item.Name
}
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
A continuación se muestra un ejemplo de cómo contar la cantidad de archivos y subcarpetas en cada carpeta en una biblioteca de documentos de SharePoint Online: Obtener archivos y subcarpetas contar en cada carpeta en una biblioteca de documentos de SharePoint Online usando PowerShell
Preguntas frecuentes:
¿Cómo creo una carpeta en SharePoint Online usando PowerShell?
Crear carpetas en SharePoint Online es una forma rápida y sencilla de organizar sus documentos y otro contenido. Para crear una carpeta mediante PowerShell, conéctese a SharePoint Online y ejecute el cmdlet Add-PnPFolder en PnP PowerShell o el método Folders.Add en CSOM.
Más información: cree una carpeta en SharePoint Online
