Forum Discussion

Uday Kiran Reddy's avatar
Uday Kiran Reddy
Copper Contributor
Dec 12, 2017

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.

13 Replies

  • 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()

     

    • Anupama22's avatar
      Anupama22
      Copper Contributor

      Manidurai Mohanamariappan 

      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_Wessels's avatar
        Gerhard_Wessels
        Copper 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.

    • Uday Kiran Reddy's avatar
      Uday Kiran Reddy
      Copper 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 Mohanamariappan's avatar
        Manidurai Mohanamariappan
        Iron 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

         

         

         

  • Have you identified in which line are you having the error? The script is quite straightforward and it should work
    • Uday Kiran Reddy's avatar
      Uday Kiran Reddy
      Copper 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.

       

       

Resources