Uploading reports (.csv) to a SharePoint site.

This is something that I run into very often.  Administrators running scripts that provide insight into their SharePoint environment.
These scripts often generate a report of some format; and they also want them uploaded to a document library; to finish off the automation process.

Below is a Cmdlet/ function that I always suggest customers add in just for this purpose:

function Upload-ReportFile
{
 param
 (
  [parameter(mandatory=$true)]
  [string]$LocalReportPath,
  [parameter(mandatory=$true)]
  [string]$LocalReportFileName,
  [parameter(mandatory=$true)]
  [string]$DestinationSiteUrl,
  [parameter(mandatory=$true)]
  [string]$DestinationDocumentLibrary,
 )
 Write-Debug "Begin: Get destination web object"
 $reportDestination = Get-SPWeb -Identity $DestinationSiteUrl
 Write-Debug "End: Get destination web object // found $reportDestination"
 Write-Debug "Begin: Check for document library in destination site"
 $reportTarget = $reportDestination.Lists.TryGetList($DestinationDocumentLibrary)
 Write-Debug "Begin: Attempting to upload report to document library" 
 $localReport = Get-Item -Path "$LocalReportPath\$LocalReportFileName"
 Write-Debug "Begin: Checking if local report can be found // found $localReport"
 
 if (!$localReport)
 {
  Write-Host "The report that you are trying to upload does not exist or was not found." 
 }
 Write-Debug "End: Checking if local report can be found"
 Write-Debug "Begin: Uploading file now!"
 $reportStream = $localReport.OpenRead()
 $reportAdd = $reportTarget.RootFolder.Files.Add($localReport.Name, [System.IO.FileStream]$reportStream, $true)
 $reportStream.Close()
 $reportTarget.Update()
 Write-Debug "End: Attempting to upload report to document library"
}

Have fun
Steve (@moss_sjeffery)