Forum Discussion

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

    • 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.

  • 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