SharePoint Online: PowerShell kullanarak Klasör Yapısını Yükleme


Gereksinim: PowerShell'i kullanarak klasör yapısını SharePoint Online'a yükleyin.

Klasör Yapısını SharePoint Online'a Yüklemek için PowerShell:

Yerel bir sürücüden bir klasör yapısını SharePoint Online'a kopyalamak zorunda kaldım. Bir klasör yapısını SharePoint Online'a yüklemek, özellikle de yüklenecek çok sayıda dosya ve klasörünüz varsa sıkıcı bir süreç olabilir.

Web tarayıcısı veya Dosya gezgini aracılığıyla bir klasör ağacı yüklendiğinde, bu klasörlerdeki tüm dosyalar da yüklenir. Yani, herhangi bir dosyayı kopyalamadan yerel sürücüden SharePoint Online belge kitaplığına bir klasör yapısını yüklemek için PowerShell'i burada bulabilirsiniz:


#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 Yellow "`tFolder Already Exists! Skipped...!"
    }
    Catch {
        #Create New Sub-Folder
        $Folder=$Web.Folders.Add($FolderRelativeURL)
        $Ctx.ExecuteQuery()
        Write-host -f Green "`tCreated Folder at "$FolderRelativeURL
    }
}
  
#Function to upload a Local Folder structure to SharePoint Online Documnet Library
Function Upload-SPOFolderStructure()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName,
        [Parameter(Mandatory=$true)] [string] $SourceFolderPath
    )

    #Setup Credentials to connect
    $Cred= Get-Credential
  
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
       
    #Get the Target Folder to Upload
    $Web = $Ctx.Web
    $Ctx.Load($Web)
    $List = $Web.Lists.GetByTitle($ListName)
    $Ctx.Load($List)
    $TargetFolder = $List.RootFolder
    $Ctx.Load($TargetFolder)
    $Ctx.ExecuteQuery()
 
    #Get All Folders and Sub-Folders from the Local 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..."
                #Call function to ensure folder
                Ensure-SPOFolder -FolderRelativeURL $FolderRelativeURL
            }
        }
    }
}
 
#Set parameter values
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$ListName="Documents"
$SourceFolderPath="C:\Users\salaudeen\Desktop\Upload"
  
#Call the function to Upload All folders and sub-folders from local folder to SharePoint Online library
Upload-SPOFolderStructure -SiteURL $SiteURL -ListName $ListName -SourceFolderPath $SourceFolderPath

Bu komut dosyası, tüm klasörleri ve alt klasörleri verilen kaynaktan SharePoint Online belge kitaplığına kopyalar.

Dosyalarla birlikte klasör yapısını da yüklemeniz gerekiyorsa şunu kullanın: PowerShell kullanarak Klasörü SharePoint Online'a Yükleyin

İlgili makaleler