Forum Discussion
How to uploads files to OneDrive for Business using Powershell
I tried the sample powershell code in below link, getting error as path not found.
https://community.spiceworks.com/topic/2001221-powershell-script-to-upload-file-to-onedrive-business
Same error with any onedrive folder.
Can anyone share any sample and the settings I need to do in my OneDrive account for scripting.
- Manidurai MohanamariappanIron Contributor
you can try this modified script and this script support sub folder in document library
$User = "testuser@domainname.com" $SiteURL = "https://test-my.sharepoint.com/personal/testuser_domainame_com"; $Folder = "C:\Users\Desktop\New folder" #DocDocLibName is document libary name $DocLibName = "Documents" $foldername = "Attachments" #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\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" $Password = ConvertTo-SecureString ‘test1234’ -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.Load($List.RootFolder) $Context.ExecuteQuery() $ServerRelativeUrlOfRootFolder = $List.RootFolder.ServerRelativeUrl $uploadFolderUrl= $ServerRelativeUrlOfRootFolder+"/"+$foldername #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 if($foldername -eq $null) { $Upload = $List.RootFolder.Files.Add($FileCreationInfo) } Else { $targetFolder = $Context.Web.GetFolderByServerRelativeUrl($uploadFolderUrl) $Upload = $targetFolder.Files.Add($FileCreationInfo); } #$Upload = $List.RootFolder.Files.Add($FileCreationInfo) $Context.Load($Upload) $Context.ExecuteQuery()
- Uday Kiran ReddyCopper Contributor
Thank you,
I will try this script.
And also if we share a folder internally with other team members, or if I open a shared folder by someone else, How to upload to that folder? - Uday Kiran ReddyCopper Contributor
And also I am getting below error if I am uploading files larger than 200 MB.
Exception calling "ExecuteQuery" with "0" argument(s): "The operation has timed out"
At C:\Users\uday-\Desktop\New Text Document (2).ps1:55 char:1
+ $Context.ExecuteQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WebException- Manidurai MohanamariappanIron Contributor
Yes, this script only support upto 250 mb size for single file so if you want to upload more than 250mb file size of single file, you can refer the below link.
https://gist.github.com/asadrefai/ecfb32db81acaa80282d
- Anupama22Copper Contributor
Hi, I tried this script but getting below error:
Exception calling “ExecuteQuery” with “0” argument(s): “The sign-in name or password does not match one in the Microsoft account system.”
But the account do exists.
The account is working if I login through webportal.
- Gerhard_WesselsCopper Contributor
Hello, I get the same error.
This worked 'previously' ( until about February this year ).
I am having the same issue with uploading to sharepoint teams sites.
I have tried every piece of code and uploader I could find in the last 2 weeks and nothing is working.
- Have you identified in which line are you having the error? The script is quite straightforward and it should work
- Uday Kiran ReddyCopper Contributor
It is not working for sub folders.
$DocLibName = "Documents" it is working(only for files, not folders)
$DocLibName = "Attachments" or $DocLibName = "Documents/Attachments" it is not working.
Attachments is the name of subfolder we created.