While building a school's Learning Gateway I needed to bulk upload all their student images into a picture library so that the My Children web part could display them. Since there were several hundred of them I wrote a little PowerShell script to perform this.
$siteUrl = "http://sharepoint/schools/test" $listName = "Students Picture Library" [system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint") $site = New-Object Microsoft.SharePoint.SPSite($siteUrl) $web = $site.OpenWeb()$list = $web.Lists[$listName] $fileCollection = $list.RootFolder.Files $files = get-childItem -Exclude *.ps1 foreach ($file in $files) { $stream = $file.OpenRead() $uploaded = $fileCollection.Add($file.Name, $stream, $TRUE) "Uploaded " + $file.Name if ($stream) {$stream.Dispose()} } if ($web) {$web.Dispose()} if ($site) {$site.Dispose()}
In order to use this:
- Save as as .ps1 file in the same folder as the files to upload.
- Change the site url and name of the list at the beginning of the script to your values
- Make sure that only the files to upload and the ps1 file is in the folder
- Open PowerShell using Run As Administrator
- Navigate to the folder
- Run the .ps1 file
The script will then iterate through all files in the current folder and upload them to the given list, overwriting them if they already exist.