Script PowerShell export all images to SharePoint Online including directories

This topic contains 1 reply, has 2 voices, and was last updated by  Rick 1 month ago.

  • Author
    Posts
  • #82442

    Olivier VILLEGENTE
    Participant

    Hi,

    I'm looking for a solution to upload all the pictures that I have in a specified directory and his subdirectories to sharepoint online.
    I can list all the pictures in my directory and his subdirectories using :

    Get-ChildItem -Recurse -Path "C:\Users\Administrateur\Desktop\tests_onedrive\travail" -Include *.jpg,*.bmp -ErrorAction silentlycontinue | ForEach {
    Write-Progress -activity "Fichiers Multimédia" -Status $_.FullName
    $extension = $_.name.split(".")[-1]
    }
    

    I can upload all the files in a specified directory to Sharepoint online using :

    #Specify tenant admin and site URL
    $User = "user@sic.nc"
    $SiteURL = "https://society-my.sharepoint.com/personal/user_sic_nc";
    
    
    $Folder = "C:\Users\Administrateur\Desktop\TEST\Photos"
    $DocLibName = "Documents"
    
    #Add references to SharePoint client assemblies and authenticate to Office 365 site – required for CSOM
    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"
    
    
    $Password  = ConvertTo-SecureString 'password' -AsPlainText -Force
    
    
    #Bind to site collection
    $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password)
    
    
    $Context.Credentials = $Creds
    
    #Retrieve list
    $List = $Context.Web.Lists.GetByTitle("$DocLibName")
    
    
    $Context.Load($List)
    
    
    
    $Context.ExecuteQuery()
    
    #Upload file
    Foreach ($File in (dir $Folder -File))
    {
    $FileStream = New-Object IO.FileStream($File.FullName,[System.IO.FileMode]::Open)
    $FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation
    $FileCreationInfo.Overwrite = $true
    $FileCreationInfo.ContentStream = $FileStream
    $FileCreationInfo.URL = $File
    $Upload = $List.RootFolder.Files.Add($FileCreationInfo)
    $Context.Load($Upload)
    $Context.ExecuteQuery()
    }
    

    But I don't know how get something like this :
    I have approximately 35 000 pictures in 1 800 subfolders and my users frequently add new pictures. That why I need a script to automate the export to Sharepoint online

    On my local computer I have :

    C:\Docs\image.jpg
    C:\Docs\text.doc
    C:\Docs\Subfolder1\something.txt
    C:\Docs\Subfolder1\photo.jpg
    C:\Docs\Subfolder1\subfolder2\my_text.doc
    C:\Docs\Subfolder1\subfolder2\one_picture.jpg
    C:\Docs\Subfolder3\meeting.txt
    C:\Docs\Subfolder3\image.jpg
    ...
    

    I need a script that build something like this on my sharepoint online :

    https://society-my.sharepoint.com/personal/user_society_nc/Documents/Docs/images.jpg
    https://society-my.sharepoint.com/personal/user_society_nc/Documents/Docs/Subfolder1/photo.jpg
    https://society-my.sharepoint.com/personal/user_society_nc/Documents/Docs/Subfolder1/subfolder2/one_picture.jpg
    https://society-my.sharepoint.com/personal/user_society_nc/Documents/Docs/Subfolder3/image.jpg
    ...
    

    Thanks for your help,

    Olivier

  • #82487

    Rick
    Participant

You must be logged in to reply to this topic.