SharePoint Online: cargar una carpeta usando PowerShell
Requisito: Cargue una carpeta en SharePoint Online mediante PowerShell.
¿Cómo cargar una carpeta en la biblioteca de documentos de SharePoint Online?
Puede cargar una carpeta y su contenido en SharePoint utilizando el botón de carga del navegador web en la barra de herramientas o arrastrando y soltando la carpeta en la biblioteca desde el Explorador de Windows. A continuación se explica cómo cargar una carpeta con sus subcarpetas y archivos en una biblioteca de documentos de SharePoint Online:
Navegue a su biblioteca de SharePoint Online >> Haga clic en "Cargar" en la barra de herramientas y elija la opción "Carpeta". Obtendrá un cuadro de diálogo Examinar para seleccionar una carpeta de su computadora.
- Seleccione una carpeta para copiarla completa a la biblioteca de SharePoint Online.
Esto cargará la carpeta y su contenido desde la computadora local a SharePoint Online. Tenga en cuenta que la opción de carga de carpeta no funciona en IE 11 (¡funciona en los navegadores Edge, Google Chrome y Firefox!). ¡También puede cargar una carpeta con archivos y subcarpetas en las bibliotecas modernas de SharePoint Online, simplemente arrastrando y soltando! Los usuarios deben tener permisos de contribución o más, ¡por cierto!
PowerShell para cargar una carpeta en SharePoint Online (incluidas carpetas, subcarpetas y archivos):
También podemos usar PowerShell para copiar una carpeta a SharePoint Online desde el disco local. Este script será útil para los usuarios que deseen cargar carpetas de datos desde sus computadoras personales a Sharepoint Online usando PowerShell. El proceso puede llevar algún tiempo, dependiendo del tamaño de sus archivos y la velocidad de la conexión a Internet. Carguemos una carpeta en SharePoint Online usando PowerShell. Aquí está mi fuente:
SDK de componentes en su máquina para utilizar ensamblados del lado del cliente. Puede descargarlo desde https://www.microsoft.com/en-us/download/details.aspx?id=42038
PowerShell es una herramienta poderosa para quienes buscan automatizar tareas tediosas en la plataforma Microsoft. Este artículo cubrirá la carga de una carpeta desde su computadora local a Sharepoint Online usando comandos de PowerShell. Si bien es posible hacer esto a través de la interfaz web de SharePoint, usar PowerShell para escenarios de automatización puede resultar más conveniente. A continuación se explica cómo cargar una carpeta en la biblioteca de documentos de SharePoint Online mediante 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 Check if Folder Exists. If not, Create the Folder
Function Ensure-SPOFolder()
{
param
(
[Parameter(Mandatory=$true)] [string] $FolderRelativeURL
)
#Check Folder Exists
Try {
$Folder = $Web.GetFolderByServerRelativeUrl($FolderRelativeURL)
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Write-host -f Green "Folder Already Exists!"
}
Catch {
#Create New Sub-Folder
$Folder=$Web.Folders.Add($FolderRelativeURL)
$Ctx.ExecuteQuery()
Write-host -f Green "Created Folder at "$FolderRelativeURL
}
}
#Function to Upload a File to a SharePoint Online
Function Upload-SPOFile()
{
param
(
[Parameter(Mandatory=$true)] [string] $SourceFilePath,
[Parameter(Mandatory=$true)] [string] $TargetFileURL
)
#Get the file from disk
$FileStream = ([System.IO.FileInfo] (Get-Item $SourceFilePath)).OpenRead()
#Get File Name from source file path - Frame FileNames
$SourceFileName = Split-path $SourceFilePath -leaf
#Add File to SharePoint Library
$FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation
$FileCreationInfo.Overwrite = $true
$FileCreationInfo.ContentStream = $FileStream
$FileCreationInfo.URL = $TargetFileURL
$FileUploaded = $TargetFolder.Files.Add($FileCreationInfo)
$Ctx.ExecuteQuery()
#Close file stream
$FileStream.Close()
Write-host "File '$TargetFileURL' Uploaded Successfully!" -ForegroundColor Green
}
#Main Function to upload a Local Folder to SharePoint Online Document Library Folder
Function Upload-SPOFolder()
{
param
(
[Parameter(Mandatory=$true)] [string] $SourceFolderPath,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.Folder] $TargetFolder
)
#Get All Files and Sub-Folders from Source
Get-ChildItem $SourceFolderPath -Recurse | ForEach-Object {
If ($_.PSIsContainer -eq $True)
{
$FolderRelativeURL = $TargetFolder.ServerRelativeURL+$_.FullName.Replace($SourceFolderPath,[string]::Empty).Replace("\","/")
If($FolderRelativeURL)
{
Write-host -f Yellow "Ensuring Folder '$FolderRelativeURL' Exists..."
Ensure-SPOFolder -FolderRelativeURL $FolderRelativeURL
}
}
Else
{
$FolderRelativeUrl = $TargetFolder.ServerRelativeURL + $_.DirectoryName.Replace($SourceFolderPath,[string]::Empty).Replace("\","/")
$FileRelativeURL = $FolderRelativeUrl+"/"+$_.Name
Write-host -f Yellow "Uploading File '$_' to URL "$FileRelativeURL
Upload-SPOFile -SourceFilePath $_.FullName -TargetFileURL $FileRelativeURL
}
}
}
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$LibraryName="Documents" #Document Library Name
$SourceFolderPath="C:\Users\salaudeen\Desktop\Marketing\Documents"
#Setup 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 Target Folder to Upload
$Web = $Ctx.Web
$Ctx.Load($Web)
$List = $Web.Lists.GetByTitle($LibraryName)
$Ctx.Load($List)
$Ctx.Load($List.RootFolder)
$Ctx.ExecuteQuery()
#Call the function to Upload All files & folders from local folder to SharePoint Online Doclibrary
Upload-SPOFolder -SourceFolderPath $SourceFolderPath -TargetFolder $List.RootFolder
Este PowerShell carga la carpeta, subcarpeta y archivos proporcionados en SharePoint Online.
Cargue una carpeta en SharePoint Online usando PnP PowerShell
Para cargar una carpeta en la biblioteca de documentos de SharePoint Online, utilice el siguiente script PnP PowerShell. Configure la URL del sitio y otros parámetros según su inquilino.
#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/retail"
$FolderLocalPath = "C:\Temp\Docs"
$TargetFolder = "Shared Documents/Docs"
#Connect with SharePoint Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get All files from the local disk
$Files = Get-ChildItem -Path $FolderLocalPath -File
#Ensure the target folder
Resolve-PnPFolder -SiteRelativePath $TargetFolder | Out-Null
#Upload All files from the local folder to SharePoint Online Folder
ForEach ($File in $Files)
{
Add-PnPFile -Path "$($File.Directory)\$($File.Name)" -Folder $TargetFolder -Values @{"Title" = $($File.Name)} | Out-Null
Write-host "Uploaded File:"$File.FullName
}
El script de PowerShell anterior carga todos los archivos de la carpeta local especificada en SharePoint Online. ¿Qué pasa si la carpeta local tiene subcarpetas y archivos? ¿Cómo subo archivos y carpetas a SharePoint Online? Bueno, aquí está el script PnP PowerShell que carga una carpeta con sus subcarpetas y archivos:
#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/retail"
$LocalFolderPath = "C:\Temp\Docs"
$TargetFolderURL = "Shared Documents" #Site Relative URL
#Connect with SharePoint Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Function to upload all files from a local folder to SharePoint Online Folder
Function Upload-PnPFolder($LocalFolderPath, $TargetFolderURL)
{
Write-host "Processing Folder:"$LocalFolderPath -f Yellow
#Get All files and SubFolders from the local disk
$Files = Get-ChildItem -Path $LocalFolderPath -File
#Ensure the target folder
Resolve-PnPFolder -SiteRelativePath $TargetFolderURL | Out-Null
#Upload All files from the local folder to SharePoint Online Folder
ForEach ($File in $Files)
{
Add-PnPFile -Path "$($File.Directory)\$($File.Name)" -Folder $TargetFolderURL -Values @{"Title" = $($File.Name)} | Out-Null
Write-host "`tUploaded File:"$File.FullName -f Green
}
}
#Call the function to upload the Root Folder
Upload-PnPFolder -LocalFolderPath $LocalFolderPath -TargetFolderURL $TargetFolderURL
#Get all Folders from given source path
Get-ChildItem -Path $LocalFolderPath -Recurse -Directory | ForEach-Object {
$FolderToUpload = ($TargetFolderURL+$_.FullName.Replace($LocalFolderPath,[string]::Empty)).Replace("\","/")
Upload-PnPFolder -LocalFolderPath $_.FullName -TargetFolderURL $FolderToUpload
}
¡Este script también funciona para OneDrive! Simplemente configure la variable URL del sitio en el sitio OneDrive y la URL de la carpeta de destino en "Documentos".
Si desea cargar solo la estructura de carpetas (sin archivos) a la biblioteca de documentos de SharePoint, use: Cargar estructura de carpetas en SharePoint Online
Preguntas frecuentes:
¿Cómo subir un archivo a SharePoint Online usando PowerShell?
Para cargar un archivo en SharePoint Online, navegue hasta su biblioteca de documentos de SharePoint Online >> Haga clic en el botón "Cargar" de la barra de herramientas >> Seleccione el elemento del menú "Archivos". Busque y seleccione los archivos que desea cargar. También puede utilizar los scripts CSOM o el cmdlet PnP PowerShell Add-PnPFile para cargar un archivo en SharePoint Online.
Más información: script de PowerShell para cargar archivos en SharePoint Online
¿Cómo subo varios archivos a la biblioteca en línea de SharePoint?
Simplemente puede arrastrarlos y soltarlos en la biblioteca de documentos de SharePoint Online para comenzar a cargarlos. El Explorador de archivos también ayuda. Para cargar archivos a SharePoint Online de forma masiva, también puede usar este script de PowerShell: Cargar archivos de forma masiva a SharePoint Online usando PowerShell
¿Cómo cargar archivos grandes a SharePoint Online?
Aunque el tamaño máximo de carga de archivos para SharePoint Online es de 250 GB, puede fallar debido al ancho de banda de la red o problemas de tiempo de espera. Para resolver el problema, utilice el cliente de sincronización OneDrive o el script de PowerShell que divide los archivos grandes y los carga en partes. Si desea cargar archivos grandes con PowerShell, utilice ¿Cómo cargar archivos más grandes en SharePoint Online usando PowerShell?


