Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. Passionate about sharing the deep technical knowledge and experience 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’)?

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

  • can it taake metadata from excel ?

  • 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

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

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

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

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


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

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

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

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

    • Hi Jan,

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

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

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

    • Hi KR,

      Updated the post with setting Metadata values in PowerShell.

      Hope it helps.


Leave a Reply

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