Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two-decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. He has held various positions including SharePoint Architect, Administrator, Developer and consultant, has helped many organizations to implement and optimize SharePoint solutions. Known for his deep technical expertise, He's passionate about sharing the knowledge and insights to help others, through the real-world articles!

19 thoughts on “How to Upload File to SharePoint Library using PowerShell?

  • Do you have a SharePoint Online (O365) version for these scripts (especially the ‘with metadata’ version’)?

    Reply
  • Hello,

    Is it possible to run the above script where SharePoint is not installed?

    Actually i am trying to upload documents to sharepoint site by running a script in non sharepoint server but its failing with an error.

    Could you please help me in achieving this.

    Thanks in Advance.

    Reply
  • can it taake metadata from excel ?

    Reply
  • Will this work if I want to copy a bunch of files to a sharepoint folder inside a library ?

    Also getting this error

    Exception getting “Item”: “urlOfFile
    Parameter name: Specified value is not supported for the urlOfFile parameter.”
    At line:33 char:4
    + if($Files.Item($DocLibName +”/” + $FileName))
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], GetValueInvocationException
    + FullyQualifiedErrorId : ExceptionWhenGetting

    Reply
  • Hi Sal, is it possible to use this to update an item that is in a Managed Metadata column? I am able to get do a text entry just fine thanks to your script, but it will not work on Managed Metadata in a Term Store.

    Reply
  • That’s some prompt answering, Sal! Tried it al, works a charm. Thanks, your help is greatly appreciated! Regards, Jan

    Reply
  • Oops, I forgot another question: is it possible to set the Content Type used when uploading?

    Reply
    • Yes, You can set the Content Type for your items while uploading. Here is how:

      #Get the Content Type
      $ctype = $web.ContentTypes[“YOUR-Content-Type”];
      #Set Content Type Property
      $Metadata.add(“ContentTypeId”, $ctype.Id);

      Regards,
      Sal

      Reply
  • Hi Salaudeen, i tried to update the “Title” column of a document item with both your methods, but without any success, unfortunately. Am I doing something wrong?

    First method: $Metadata.add(“Title”, “SomeValue”) – Result: Title stays empty. Other metadata works fine!
    Second method: $UploadedFile.Item[“Title”]=”SomeValue” – Result: error message about Null valued array.

    Thanks for a great and helpful article, hope you can help a little bit more. Thanks in advance, and regards from the Netherlands!

    Reply
    • Hi Jan,

      Just verified the second method, Works as expected:

      $UploadedFile=$Files.Add($DocLibName +”/” + $FileName,$File.OpenRead(), $true)
      $UploadedFile.Item[“Title”]= “Title Value Goes here”
      $UploadedFile.Item.Update()

      Reply
  • Nice article Salaudeen, it really helped me a lot! However, I’m experiencing some problems when trying to update the “Title” column of a document. I just added the line:
    $Metadata.add(“Title”, “SomeValue”)

    but nothing happened. Tried the second method as well:
    $UploadedFile.Item[“Title”]=”SomeValue”

    but again no success. Any idea what I might be doing wrong? Thanks in advance!
    Regards, Jan

    Reply
    • Hi Jan,

      For Title Field, Use: “vti_title” when you use Hash-table.

      $Metadata.add(“vti_title”, “Your Title Value”)

      Reply
  • What if the file has a metadata associated with it ? For e.g. if it has a “Month” field that need to be filled up while uploading the document ?

    Reply
    • Hi KR,

      Updated the post with setting Metadata values in PowerShell.

      Hope it helps.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *