Upload d’un fichier sur une library SharePoint en Powershell
Plusieurs solutions existent pour stocker un fichier dans le but de le partager : FTP, stockage en ligne (OneDrive & co), partage réseau...
SharePoint est souvent une excellente solution, elle a l'avantage d'offrir dans ce cas de multiples fonctionnalités propres à SharePoint (partage, collaboration, versioning ect), et de mettre à disposition une belle API comme Microsoft sait nous le faire :).
Il est possible de réaliser un upload de différentes façon, nous allons nous attarder sur un cas de base en Powershell.
Avant tout il faudra installer le SharePoint Server 2013 Client Components SDK afin de pouvoir avoir accès aux API.
Et voici 40 lignes de pur bonheur :
Param(
[Parameter(Mandatory=$true)]
[string]$User,
[Parameter(Mandatory=$true)]
[string]$SiteURL,
[Parameter(Mandatory=$true)]
[string]$Library,
[Parameter(Mandatory=$true)]
[string]$Source,
[Parameter(Mandatory=$true)]
[string]$Password
)
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
function UploadFile($Context, $File, $List){
$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.Name
$Upload = $List.RootFolder.Files.Add($FileCreationInfo)
$Context.Load($Upload)
$Context.ExecuteQuery()
}
$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$securePassword)
$Context.Credentials = $Credentials
$List = $Context.Web.Lists.GetByTitle($Library)
$Context.Load($List)
$Context.ExecuteQuery()
$File = ([System.IO.FileInfo]$Source)
UploadFile $Context $File $List
Exemple d’utilisation :
.\MyScript.ps1 -SiteURL "https://me.sharepoint.com/sites/mysite" -Library "MyLib" -User "Username@outlook.com" -Password "password1337" -Source "C:\myFile.txt"
Bien sûr il faudra juste faire attention aux différentes règles établit sur le SharePoint cible (taille maximale du fichier, fichiers autorisés & co) et tout se passera bien :)
Commentaires