Powershell Script to Automate Export and Import for a SharePoint 2010 Site

The script requires input CSV file which has the details of source and destination URL's. Download the attached file to get the script and the CSV file format.

The script triggers you an email once the export and import completes. You need not wait monitoring the powershell window. Provide SMTP, From, Reply to and To addresses in the script.

Script
  1. $LogTime = Get-Date -Format yyyy-MM-dd_hh-mm  
  2. $LogFile = ".\ExportImportPatch-$LogTime.rtf"  
  3.  
  4. # Add SharePoint PowerShell Snapin  
  5.   
  6.   
  7. if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) {  
  8.     Add-PSSnapin Microsoft.SharePoint.Powershell  
  9. }  
  10.   
  11. $scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent  
  12. Set-Location $scriptBase  
  13.  
  14.  
  15. #Deleting any .rtf files in the scriptbase location  
  16. $FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf  
  17. if($FindRTFFile)  
  18. {  
  19.  foreach($file in $FindRTFFile)  
  20.   {  
  21.    remove-item $file  
  22.   }  
  23. }  
  24.   
  25.   
  26. start-transcript $logfile  
  27.   
  28. Function ExportImport([String]$SourceURL, [String]$DestinationURL)  
  29. {  
  30.    
  31.  $Web = get-spweb $SourceURL  
  32.   
  33.  $WebName = $Web.ID.GUID  
  34.  write-host $webname  
  35.   
  36.  Write-host "Creating folder for the export" -fore Magenta  
  37.  New-Item $scriptbase\$WebName -type directory  
  38.  Write-host "folder created for the export" -fore Magenta  
  39.   
  40.  $ExportPath = $scriptbase + "\" + $WebName + "\" + $webname + ".cmp"  
  41.  write-host "Export path is " $ExportPath -fore cyan  
  42.   
  43.  Write-host "Performing export for the site " $SourceURL -fore yellow  
  44.  Export-spweb -identity $SourceURL -path $ExportPath -IncludeVersions all -IncludeUserSecurity  
  45.  write-host "Export completed" -fore green  
  46.   
  47.  Write-host "Performing import on site " $DestinationURL -fore yellow  
  48.  Import-SpWeb -identity $DestinationURL -path $ExportPath -IncludeUserSecurity  
  49.  Write-host "Import completed for the site " $DestinationURL -fore green  
  50.   
  51.  Write-host "Deleting folder" $scriptbase\$WebName  
  52.  remove-item $scriptbase\$WebName\* -exclude *.log -recurse -confirm:$false  
  53.  write-host "Folder deleted successfully"  
  54.   
  55. }  
  56.   
  57. function sendMail{  
  58.   
  59.      Write-Host "Sending Email"  
  60.  
  61.      #SMTP server name  
  62.      $smtpServer = "SMTP address"  
  63.  
  64.      #Creating a Mail object  
  65.      $msg = new-object Net.Mail.MailMessage  
  66.  
  67.      #Creating SMTP server object  
  68.      $smtp = new-object Net.Mail.SmtpClient($smtpServer)  
  69.  
  70.      #Email structure   
  71.      $msg.From = "[email protected]"  
  72.      $msg.ReplyTo = "[email protected]"  
  73.      #For multiple to address, seperate the address with comma  
  74.      $msg.To.Add("[email protected],[email protected]")  
  75.      $msg.subject = "Export/Import Completed"  
  76.      $msg.body = "Export/Import Completed."  
  77.  
  78.      #Sending email   
  79.      $smtp.Send($msg)  
  80.   
  81. }  
  82.   
  83. write-host "Please place the ExportImportDetails.csv under the folder where the powershell script is placed" -fore yellow  
  84. sleep(3)  
  85. $ans  = read-host "Did you place the file? (y/n) "  
  86. if($ans -eq 'y')  
  87. {  
  88. $csvfile = $scriptbase + "\" + "ExportImportDetails.csv"  
  89. import-csv $csvfile | where {  
  90. ExportImport $_.SourceURL $_.DestinationURL  
  91.  }  
  92. sendMail  
  93. }  
  94. else  
  95. {  
  96. write-host "The user hasn't placed the file and choosen to exit" -fore cyan  
  97. }  
  98.   
  99. stop-transcript