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