ローカルのファイルをSharePointのドキュメントライブラリにPowerShellを使ってアップロードする方法をご紹介します。
例えばサーバ上のファイルをSharePointのドキュメントライブラリに夜間バッチでバックアップしたい時に活用することができます。
CSOMのモジュールをインストール
CSOMのモジュールをインストールしておく必要があります。
Microsoftのサイトよりインストールしてください。
PowerShell で SharePoint CSOM を使用する際の Tips
SharePoint Online Management Shellをインストールしても動きます。
PowerShellコード
環境に合わせて変数値は変更してください。
今回は次の条件でファイルをアップロードする前提となっています。
アップロードするファイル
C:\temp\uploadfile.txt
C:\temp\uploadfile.txt
アップロードするSharePointドキュメントライブラリ
https://example.sharepoint.com/sites/library/hoge
#Load SharePoint CSOM Assemblies [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") > $null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") > $null #Office365 user information $UserName = "user@example.com" $Password = convertto-securestring "XXXXXXXX" -asplaintext -force #Upload file information $CurrentFolder = "C:\temp" $UploadFileName = "uploadfile.txt" $UploadFilePath = $CurrentFolder + "\" + $UploadFileName #SharePoint Document Library $SiteURL = "https://example.sharepoint.com/sites/library" $StaticURL = "/hoge" $TargetFolderURL = $SiteURL + $StaticURL try { #Setup the context $credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $Password) $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Context.Credentials = $credential $objWeb = $Context.Web $Context.Load($objWeb) $Context.ExecuteQuery() #Get upload folder $objFolder = $Context.Web.GetFolderByServerRelativeUrl($TargetFolderURL) $Context.Load($objFolder) $Context.ExecuteQuery() # File upload $FileStream = New-Object System.IO.FileStream($uploadFile,[System.IO.FileMode]::Open) $FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation $FileCreationInfo.Overwrite = $true $FileCreationInfo.ContentStream = $FileStream $FileCreationInfo.Url = $UploadFileName $UpLoad = $objFolder.Files.Add($FileCreationInfo) $Context.Load($UpLoad) $Context.ExecuteQuery() $FileStream.Close() $Context.Dispose() Write-host "File uploaded Successfully!" -f Green } Catch { write-host "Error Uploading File: $($_.Exception.Message)" -f Red }