Author Posts

October 19, 2017 at 5:37 am

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