Introduction
Consider a scenario where you need to upload thousands of files to SharePoint 2010. Before uploading the files you must prepare for it. This article outlines how to get prepared for uploading bulk files to SharePoint.
Preparation
There are at least the following 3 scenarios where the upload of the file can fail:
- Blocked file types
- Invalid special characters in the file name
- Size of the file
[~#%&*{}|:<>?/|"]
How to Upload Blocked file types
In order to upload the blocked file types in SP you need to either remove them from the blocked file types list (not recommended) or rename the file with a “.txt” extension. So when uploading the file SharePoint understands it as a .txt file and not as any other file type. In order to use the file you can download the file and rename it to the original file type.
The following piece of code renames the file to change its type to “.txt” format:
- $path = read-host "Enter the path"
- $TestPath = test-path $path
- if($TestPath)
- {
- Get-ChildItem -path $path -recurse |
- Foreach-Object
- {
- $name = $_.name
- if($name.contains(".ade") -or $name.contains(".adp") -or $name.contains(".app") -or $name.contains
- (".asa") -or $name.contains(".ashx") -or $name.contains(".asmx") -or $name.contains(".asp") -or
- $name.contains(".bas") -or $name.contains(".bat") -or $name.contains(".cdx") -or
- $name.contains(".cer") -or $name.contains(".chm") -or $name.contains(".class") -or
- $name.contains(".cmd") -or $name.contains(".com") -or $name.contains(".config") -or
- $name.contains(".cpl") -or $name.contains(".crt") -or $name.contains(".csh") -or
- $name.contains(".dll") -or $name.contains(".exe") -or $name.contains(".fxp") -or
- $name.contains(".hlp") -or $name.contains(".hta") -or $name.contains(".htr") -or
- $name.contains(".htw") -or $name.contains(".ida") -or $name.contains(".idc") -or
- $name.contains(".idq") -or $name.contains(".ins") -or $name.contains(".isp") -or
- $name.contains(".its") -or $name.contains(".jse") -or $name.contains(".ksh") -or
- $name.contains(".lnk") -or $name.contains(".mad") -or $name.contains(".maf") -or
- $name.contains(".mag") -or $name.contains(".mam") -or $name.contains(".maq") -or
- $name.contains(".mar") -or $name.contains(".mas") -or $name.contains(".mat") -or
- $name.contains(".mau") -or $name.contains(".mav") -or $name.contains(".maw") -or
- $name.contains(".mda") -or $name.contains(".mdb") -or $name.contains(".mde") -or
- $name.contains(".mdt") -or $name.contains(".mdw") -or $name.contains(".mdz") -or
- $name.contains(".msc") -or $name.contains(".msh") -or $name.contains(".msh1") -or
- $name.contains(".msh1xml") -or $name.contains(".msh2") -or $name.contains(".msh2xml") -or
- $name.contains(".mshxml") -or $name.contains(".msi") -or $name.contains(".msp") -or
- $name.contains(".mst") -or $name.contains(".ops") -or $name.contains(".pcd") -or
- $name.contains(".pif") -or $name.contains(".prf") -or $name.contains(".prg") -or
- $name.contains(".printer") -or $name.contains(".pst") -or $name.contains(".reg") -or
- $name.contains(".rem") -or $name.contains(".scf") -or $name.contains(".scr") -or
- $name.contains(".sct") -or $name.contains(".shb") -or $name.contains(".shs") -or
- $name.contains(".shtm") -or $name.contains(".shtml") -or $name.contains(".soap") -or
- $name.contains(".stm") -or $name.contains(".url") -or $name.contains(".vb") -or
- $name.contains(".vbe") -or $name.contains(".vbs") -or $name.contains(".ws") -or
- $name.contains(".wsc") -or $name.contains(".wsf") -or $name.contains(".wsh") -or
- $name.contains(".ADE") -or $name.contains(".ADP") -or $name.contains(".APP") -or
- $name.contains(".ASA") -or $name.contains(".ASHX") -or $name.contains(".ASMX") -or
- $name.contains(".ASP") -or $name.contains(".BAS") -or $name.contains(".BAT") -or
- $name.contains(".CDX") -or $name.contains(".CER") -or $name.contains(".CHM") -or
- $name.contains(".CLASS") -or $name.contains(".CMD") -or $name.contains(".COM") -or
- $name.contains(".CONFIG") -or $name.contains(".CPL") -or $name.contains(".CRT") -or
- $name.contains(".CSH") -or $name.contains(".DLL") -or $name.contains(".EXE") -or
- $name.contains(".FXP") -or $name.contains(".HLP") -or $name.contains(".HTA") -or
- $name.contains(".HTR") -or $name.contains(".HTW") -or $name.contains(".IDA") -or
- $name.contains(".IDC") -or $name.contains(".IDQ") -or $name.contains(".INS") -or
- $name.contains(".ISP") -or $name.contains(".ITS") -or $name.contains(".JSE") -or
- $name.contains(".KSH") -or $name.contains(".LNK") -or $name.contains(".MAD") -or
- $name.contains(".MAF") -or $name.contains(".MAG") -or $name.contains(".MAM") -or
- $name.contains(".MAQ") -or $name.contains(".MAR") -or $name.contains(".MAS") -or
- $name.contains(".MAT") -or $name.contains(".MAU") -or $name.contains(".MAV") -or
- $name.contains(".MAW") -or $name.contains(".MDA") -or $name.contains(".MDB") -or
- $name.contains(".MDE") -or $name.contains(".MDT") -or $name.contains(".MDW") -or
- $name.contains(".MDZ") -or $name.contains(".MSC") -or $name.contains(".MSH") -or
- $name.contains(".MSH1") -or $name.contains(".MSH1XML") -or $name.contains(".MSH2") -or
- $name.contains(".MSH2XML") -or $name.contains(".MSHXML") -or $name.contains(".MSI") -or
- $name.contains(".MSP") -or $name.contains(".MST") -or $name.contains(".OPS") -or
- $name.contains(".PCD") -or $name.contains(".PIF") -or $name.contains(".PRF") -or
- $name.contains(".PRG") -or $name.contains(".PRINTER") -or $name.contains(".PST") -or
- $name.contains(".REG") -or $name.contains(".REM") -or $name.contains(".SCF") -or
- $name.contains(".SCR") -or $name.contains(".SCT") -or $name.contains(".SHB") -or
- $name.contains(".SHS") -or $name.contains(".SHTM") -or $name.contains(".SHTML") -or
- $name.contains(".SOAP") -or $name.contains(".STM") -or $name.contains(".URL") -or
- $name.contains(".VB") -or $name.contains(".VBE") -or $name.contains(".VBS") -or
- $name.contains(".WS") -or $name.contains(".WSC") -or $name.contains(".WSF") -or $
- name.contains(".WSH"))
- {
- $newname = $_.name + ".txt"
- write-host $newname
- Rename-Item -Path $_.fullname -newname ($newName)
- }
- }
- }
- else
- {
- write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan
- write-host "SCRIPT FINISHED" -fore yellow
- }
The following piece of code loops through all the files given in the path and replaces the special characters in the name with an empty value.
- $path = read-host "Enter the path"
- $TestPath = test-path $path
- if($TestPath)
- {
- Get-ChildItem -path $path -recurse |
- Foreach-Object
{ - $newName = $_.name -replace '[~#%&*{}|:<>?/|"]', ''
- if (-not ($_.name -eq $newname))
{ - Rename-Item -Path $_.fullname -newname ($newName)
- }
- }
- }
- else
- {
- write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan
- write-host "SCRIPT FINISHED" -fore yellow
- }
- $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm
- $LogFile = ".\ReplaceInvalidFileExtensionPatch-$LogTime.rtf"
- # Add SharePoint PowerShell Snapin
- if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
- {
- Add-PSSnapin Microsoft.SharePoint.Powershell
- }
- start-transcript $logfile
- $path = read-host "Enter the path"
- $TestPath = test-path $path
- if($TestPath)
- {
- Get-ChildItem -path $path -recurse |
- Foreach-Object
- {
- $name = $_.name
- if($name.contains(".ade") -or $name.contains(".adp") -or $name.contains(".app") -or
- $name.contains(".asa") - or $name.contains(".ashx") -or $name.contains(".asmx") -or
- $name.contains(".asp") -or $name.contains(".bas") -or $name.contains(".bat") -or
- $name.contains(".cdx") -or $name.contains(".cer") -or $name.contains(".chm") -or
- $name.contains(".class") -or $name.contains(".cmd") -or $name.contains(".com") -or
- $name.contains(".config") -or $name.contains(".cpl") -or $name.contains(".crt") -or
- $name.contains(".csh") -or $name.contains(".dll") -or $name.contains(".exe") -or
- $name.contains(".fxp") -or $name.contains(".hlp") -or $name.contains(".hta") -or
- $name.contains(".htr") -or $name.contains(".htw") -or $name.contains(".ida") -or
- $name.contains(".idc") -or $name.contains(".idq") -or $name.contains(".ins") -or
- $name.contains(".isp") -or $name.contains(".its") -or $name.contains(".jse") -or
- $name.contains(".ksh") -or $name.contains(".lnk") -or $name.contains(".mad") -or
- $name.contains(".maf") -or $name.contains(".mag") -or $name.contains(".mam") -or
- $name.contains(".maq") -or $name.contains(".mar") -or $name.contains(".mas") -or
- $name.contains(".mat") -or $name.contains(".mau") -or $name.contains(".mav") -or
- $name.contains(".maw") -or $name.contains(".mda") -or $name.contains(".mdb") -or
- $name.contains(".mde") -or $name.contains(".mdt") -or $name.contains(".mdw") -or
- $name.contains(".mdz") -or $name.contains(".msc") -or $name.contains(".msh") -or
- $name.contains(".msh1") -or $name.contains(".msh1xml") -or $name.contains(".msh2") -or
- $name.contains(".msh2xml") -or $name.contains(".mshxml") -or $name.contains(".msi") -or
- $name.contains(".msp") -or $name.contains(".mst") -or $name.contains(".ops") -or $name.contains
- (".pcd") -or $name.contains(".pif") -or $name.contains(".prf") -or $name.contains(".prg") -or
- $name.contains(".printer") -or $name.contains(".pst") -or $name.contains(".reg") -or $name.contains
- (".rem") -or $name.contains(".scf") -or $name.contains(".scr") -or $name.contains(".sct") -or
- $name.contains(".shb") -or $name.contains(".shs") -or $name.contains(".shtm") -or $name.contains
- (".shtml") -or $name.contains(".soap") -or $name.contains(".stm") -or $name.contains(".url") -or
- $name.contains(".vb") -or $name.contains(".vbe") -or $name.contains(".vbs") -or $name.contains
- (".ws") -or $name.contains(".wsc") -or $name.contains(".wsf") -or $name.contains(".wsh") -or
- $name.contains(".ADE") -or $name.contains(".ADP") -or $name.contains(".APP") -or $name.contains
- (".ASA") -or $name.contains(".ASHX") -or $name.contains(".ASMX") -or $name.contains(".ASP") -or
- $name.contains(".BAS") -or $name.contains(".BAT") -or $name.contains(".CDX") -or $name.contains
- (".CER") -or $name.contains(".CHM") -or $name.contains(".CLASS") -or $name.contains(".CMD") -or
- $name.contains(".COM") -or $name.contains(".CONFIG") -or $name.contains(".CPL") -or $name.contains
- (".CRT") -or $name.contains(".CSH") -or $name.contains(".DLL") -or $name.contains(".EXE") -or
- $name.contains(".FXP") -or $name.contains(".HLP") -or $name.contains(".HTA") -or $name.contains
- (".HTR") -or $name.contains(".HTW") -or $name.contains(".IDA") -or $name.contains(".IDC") -or
- $name.contains(".IDQ") -or $name.contains(".INS") -or $name.contains(".ISP") -or $name.contains
- (".ITS") -or $name.contains(".JSE") -or $name.contains(".KSH") -or $name.contains(".LNK") -or
- $name.contains(".MAD") -or $name.contains(".MAF") -or $name.contains(".MAG") -or $name.contains
- (".MAM") -or $name.contains(".MAQ") -or $name.contains(".MAR") -or $name.contains(".MAS") -or
- $name.contains(".MAT") -or $name.contains(".MAU") -or $name.contains(".MAV") -or $name.contains
- (".MAW") -or $name.contains(".MDA") -or $name.contains(".MDB") -or $name.contains(".MDE") -or
- $name.contains(".MDT") -or $name.contains(".MDW") -or $name.contains(".MDZ") -or $name.contains
- (".MSC") -or $name.contains(".MSH") -or $name.contains(".MSH1") -or $name.contains(".MSH1XML") -or
- $name.contains(".MSH2") -or $name.contains(".MSH2XML") -or $name.contains(".MSHXML") -or
- $name.contains(".MSI") -or $name.contains(".MSP") -or $name.contains(".MST") -or $name.contains
- (".OPS") -or $name.contains(".PCD") -or $name.contains(".PIF") -or $name.contains(".PRF") -or
- $name.contains(".PRG") -or $name.contains(".PRINTER") -or $name.contains(".PST") -or $name.contains
- (".REG") -or $name.contains(".REM") -or $name.contains(".SCF") -or $name.contains(".SCR")
- -or $name.contains(".SCT") -or $name.contains(".SHB") -or $name.contains(".SHS") -or
- $name.contains(".SHTM") or $name.contains(".SHTML") -or $name.contains(".SOAP") -or
- $name.contains(".STM") -or $name.contains(".URL") -or $name.contains(".VB") -or $name.contains
- (".VBE") -or $name.contains(".VBS") -or $name.contains(".WS") -or $name.contains(".WSC") -or
- $name.contains(".WSF") -or $name.contains(".WSH"))
- {
- $newname = $_.name + ".txt"
- write-host $newname
- Rename-Item -Path $_.fullname -newname ($newName)
- }
- }
- }
- else
- {
- write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan
- write-host "SCRIPT FINISHED" -fore yellow
- }
- stop-transcript
- $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm
- $LogFile = ".\ReplaceSpecialCharactersInFileNamePatch-$LogTime.rtf"
- # Add SharePoint PowerShell Snapin
- if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null )
- {
- Add-PSSnapin Microsoft.SharePoint.Powershell
- }
- start-transcript $logfile
- $path = read-host "Enter the path"
- $TestPath = test-path $path
- if($TestPath)
- {
- Get-ChildItem -path $path -recurse |
- Foreach-Object
- {
- $newName = $_.name -replace '[~#%&*{}|:<>?/|"]', ''
- if (-not ($_.name -eq $newname))
- {
- Rename-Item -Path $_.fullname -newname ($newName)
- }
- }
- }
- else
- {
- write-host "Invalid path details.... Please run the script again and enter the valid path" -fore cyan
- write-host "SCRIPT FINISHED" -fore yellow
- }
- stop-transcript
Step 1: Download the script
Step 2: Navigate to the script path
Step 3: Execute the script

Enter the path where the files are placed.

Enter the path where the files are placed.
Conclusion
Thus this article explained how to prepare for uploading multiple files to SharePoint 2010 using a PowerShell script.

Karthik Muthu KaruppanPosted Apr 30, 2015, 11:06 AM
thanks
Vijay SPosted Apr 30, 2015, 3:41 AM
Good show
Karthik Muthu KaruppanPosted Mar 30, 2015, 10:25 AM
Thanks Gowtham
Gowtham RajamanickamPosted Mar 27, 2015, 2:51 PM
good one...
Karthik Muthu KaruppanPosted Mar 19, 2015, 1:31 PM
Thanks Tom
Tom MohanPosted Mar 19, 2015, 12:34 PM
useful
Karthik Muthu KaruppanPosted Mar 19, 2015, 10:54 AM
:)
Gowtham RajamanickamPosted Mar 19, 2015, 2:22 AM
useful and informative...