Friday, May 8, 2015

Upload and Download File(s) from Document Library via PowerShell


# UPLOAD FILES TO DOCUMENT LIBRARY

cls

if((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

$docLibrary = "Document library name"
$localFolderPath = "folder path"
$webUrl = "web url"
$web = Get-SPWeb -Identity $webUrl

$docLibrary = $web.Lists[$docLibraryName] 
$files = ([System.IO.DirectoryInfo] (Get-Item $localFolderPath)).GetFiles() | ForEach-Object { 

    #Create file stream object from file
    $fileStream = ([System.IO.FileInfo] (Get-Item $_.FullName)).OpenRead()
    $contents = new-object byte[] $fileStream.Length
    $fileStream.Read($contents, 0, [int]$fileStream.Length);
    $fileStream.Close(); 

    write-host "Uploading " $_.Name "to" $docLibrary.Title "in" $web.Title "..." 

    #Add file
    $folder = $web.getfolder($docLibrary.Title) 
    $spFile = $folder.Files.Add($folder.Url + "/" + $_.Name, $contents, $true)
    $spItem = $spFile.Item 
}


Write-Host "Uploaded File(s) to library..." -f Green


# GET FILES FROM DOCUMENT LIBRARY USING CAML AND DOWNLOAD THOSE FILES

if((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null)
{
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}

$site_url = "site url";
$docLibrary = "Document Library Title"
$downloadFolder = "Local Folder Path";

$site = Get-SPSite -Identity $site_url
$docLibrary = $site.RootWeb.Lists.TryGetList($docLibrary);

$query = New-Object Microsoft.SharePoint.SPQuery
# Get All the files from DocLib where Status =  New. _Status is the internal name of the column.
$camlQuery ="New"                          
$query.ViewAttributes = "Scope=Recursive";
$query.Query = $camlQuery

if(Test-Path $downloadFolder)
{
    $list_Items = $list_farm_solutions.GetItems($query);        


    Write-Host "List Title: " $docLibrary.title -f Green
    Write-Host "Total items found: " + $list_Items.Count -f Green

    foreach($list_item in $list_Items) 
    {
       # Download a File from Document Library
       $file = $web.GetFile($list_item.Url)
       $binary = $file.OpenBinary()
       $filePath = Join-Path $downloadFolder $file.Name
       $stream = New-Object System.IO.FileStream($filePath,[System.IO.FileMode]'Create', [System.IO.FileAccess]'Write')
       $writer = New-Object System.IO.BinaryWriter($stream)
       $writer.write($binary)
       $writer.Close()


    }
}
else
{
    Write-Host "Incorrect download Path: " $downloadFolder -f Cyan
}

No comments:

Post a Comment