Wednesday, December 7, 2011

SharePoint 2010 | User Profiles | Recent Activities

Hi

While querying user profile changes we can get changes upto last 14 days.

Now,I want to know about recenet activities web part which shows user profile edits by the user. Up to which point in the past , it shows the user profile changes as recent activities ?

I need to know the duration (in days) in past for which the changes in user profile are reflected as recent activities on page : http://<server>/my/Person.aspx?accountname=domain\AccountID

Reply 1

Helo Heamntrhtk,

 

Check on this site you can configure it: http://sharepointsolutions.blogspot.com/2010/11/sharepoint-2010-social-networkingpart-3.html

Under section:"Timer Jobs Required"

 

The following are listed in the webpart:

Rating, blog, tag, like, ..

Activity Feeds are an ongoing record of a user’s activities through the day (or for whatever time period in which they choose to update the feed). There are two sections of Activity feed.

· My Activities - My Profile > Recent Activities

· Consolidated - My Newsfeed (Activities which track)

These two sections are like two sides of a conversation. Both are depending on Activity Feed timer job.

Kr, Gokan

 

Reply 2

Only the following activities will be displayed in the recent activities.

Rating, Tagging, new blog post and so on.

http://blogs.msdn.com/b/spses/archive/2011/02/05/social-computing-part-3-activity-feeds-social-ratings-tags-and-notes.aspx

 




Wayne Fan

How to exclude items from Search Result page?

in sharepoint 2010, there is an option to remove a url from search results immidiately, corresponding crawling rules/ exclude rules are set automatically

And the that specific content does not get crawled.

 

Otherwise go for Crawl exclude rules directly.

Tuesday, August 9, 2011

The user does not exist or is not unique FBA while adding AdGroup to siteGroup SharePoint 2010

Hi

I tried to add an ADGroup/FBARole to  site  group . In 2 ways:

1 is AddUser(SPUser user);

2nd is AddUser(string loginName, string email, string name, string notes)

code for 1st option:

SPUser cntrSubSiteUser = CreateUser(Constants.C_FBA_AUTHENTICATION_GROUP_PREFIX + RoleProvider + Constants.C_AUTHENTICATION_PIPE + ADgroup, "", ADgroup, "", web.Site);//loginname in format in format c:0-.f|roleproviderName|pp 1001 siteGroup.AddUser(cntrSubSiteUser);

siteGroup.Update();

and the createuser function is like;

private static SPUser CreateUser(string strLoginName, string strEMail, string strName, string strNotes, SPSite spSite) { SPUser spReturn = null; SPRoleAssignment spRoleAssignment = new SPRoleAssignment(strLoginName, strEMail, strName, strNotes); SPRoleDefinition spSPRoleDefinition = spSite.RootWeb.RoleDefinitions["Read"]; spRoleAssignment.RoleDefinitionBindings.Add(spSPRoleDefinition); spSite.RootWeb.RoleAssignments.Add(spRoleAssignment); //Update site spSite.RootWeb.Update(); spReturn = spSite.RootWeb.AllUsers[strLoginName]; return spReturn; }

 

for the second option code is like:- siteGroup.AddUser(Constants.C_FBA_AUTHENTICATION_GROUP_PREFIX + RoleProvider + Constants.C_AUTHENTICATION_PIPE + ADgroup, "", ADgroup, "");//Login Name in format c:0-.f|amsurgrole|pp 1001

siteGroup.Update();

 

 

 

Now lets come to the problem:

On 1 of our dev servers it works fine. But on production we get the error: The user does not exist or is not unique

However by UI, We can add this FBA Role  to any group.

 

please help.

 

Reply 1


hi

 

we have got the solution.

 

we are adding user in group for site 1( on web app 1) from site 2 ( on web app 2) code.  web app 1 is FBA .  site 2 is normal windows site.

in 2007 this code works fine

 

but for sharepoint 2010, we need to give entries for roleprovider and membership provider in web application 2 (admin web app) web.config  also.

                                                                      Reply 1.1


 I  am also getting the same exception. I am doing everything on a single sharepoint application

[SPException: The user does not exist or is not unique.]

 

Can you please point out, what are the other scenarios for the exception to happen?

Reply 1.1.1

did u also do ensure user ? also make sure user exists in ad/ ur membership provider

Reply 1.1.1.1

when extending the application it named the membership provider wrongly, hence the error is caused. Thanks for all the replies. Now the problem is solved.

Tuesday, June 21, 2011

Few of the SharePoint Sites not accessible outside server

Hi

 

Few of my sharepoint sirtes do not open outside the server. Others are working fine. Did you faced such issue in past ?

I verified almost every setting . All the settings on both type of web applications are same.

Reply : 

It was due to firewall settings on the server.

Tuesday, June 14, 2011

SharePoint disable loopback check | Specify Host Names

A number of errors related to authentication failure are reported with SharePoint 20xx

You can try disable loopback check  or Specify host names based on how much you can compromise on security front.

Method 1: Specify host names (Preferred method if NTLM authentication is desired)

To specify the host names that are mapped to the loopback address and can connect to Web sites on your computer, follow these steps:

  1. Set the


DisableStrictNameChecking
registry entry to 1.

2. Click Start, click Run, type regedit, and then click OK.

3. In Registry Editor, locate and then click the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
4. Right-click MSV1_0, point to New, and then click Multi-String Value.
5. Type BackConnectionHostNames, and then press ENTER.
6. Right-click BackConnectionHostNames, and then click Modify.
7. In the Value data box, type the host name or the host names for the sites that are on the local computer, and then click OK.
8. Quit Registry Editor, and then restart the IISAdmin service.

 
Method 2: Disable the loopback check (less-recommended method)

The second method is to disable the loopback check by setting the DisableLoopbackCheck registry key.

To set the DisableLoopbackCheck registry key, follow these steps:
1. Set the
DisableStrictNameChecking
registry entry to 1.
2. Click Start, click Run, type regedit, and then click OK.
3. In Registry Editor, locate and then click the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
4. Right-click Lsa, point to New, and then click DWORD Value.
5. Type DisableLoopbackCheck, and then press ENTER.
6. Right-click DisableLoopbackCheck, and then click Modify.
7. In the Value data box, type 1, and then click OK.
8. Quit Registry Editor, and then restart your computer.

                                                 or
$regKeyPath = "HKLM:\System\CurrentControlSet\Control\Lsa"
$key = "DisableLoopbackCheck"
New-ItemProperty -Path $regKeyPath -Name $key -Value "1" -PropertyType dword


Reference :http://support.microsoft.com/kb/896861

Friday, June 10, 2011

refer unsigned assembly in SharePoint 2010 Project ( Visual Studio 2010)

I have around 50 3rd party dll's which I need to refer in my SharePoint project.
But since my project dll is strong named we were unable to refer unsigned dll's in it.
I tried below mentioned things:
1. removed signing of my dll from project properties. Project is build But in this case xml template of the package fails .The error I get while package creation is :
Value cannot be null. Parameter name: PublicKey
2. I tried below mentioned commands to strong name all the 3rd party dlls :
ildasm myDLL.dll /out:myDLL.il
This generates myDLL.il and myDLL.res
ilasm myDLL.il /key:Key.snk /res:myDLL.res /dll /out:myDLL.dll
This generates back strong named DLL.
But after this few of the namespaces get missing in the final DLL !!!!! well to my surprise .
3. I created a blank class library project . Given predefined structure to deploy 3rd party dll ( 80\bin) , with user controls inside proper structure as per wspbuilder guidelines. given the output path of my project dll as (80\bin).
Now I have a wsp ready and working being deployed . But neither my project dll is strong named nor the third party DLLs. dlls are deployed in web application bin and user controls inside proper control template folders . They work fine . but …
Now I come to my query:
I need to strong name my project dll still use 3rd party unsigned dll's inside my SharePoint project very similar to point 2 above.
Kindly suggest something.

Reply 1 By http://social.technet.microsoft.com/profile/martin%20hatch/?ws=usercard-mini

Ask the 3rd party to provide properly signed assemblies?

 

Reply 2 By http://social.technet.microsoft.com/profile/geoff%20webber-cross/?ws=usercard-mini

 

Might be a good option to wrap your business logic up that uses the DLLs in a WCF service and run it outside SharePoint, then you can call these methods safely from inside SharePoint (are you writing web parts?).

Reply 3 By http://social.technet.microsoft.com/profile/ryan%20t%20mann/?ws=usercard-mini

1. Use IlDasm to disassemble the DLL to an .il File

2.  Then use IlAsm to reassemble it passing in a new key generated with the sn command line utility to generate strong names.

Make sure you use the .Net 3.5 versions of ILDasm and ILAsm or it will reassermble the Dll for the wrong framework, sharepoint  2010 stuff is .Net 3.5

The downside is you'll have to do that everytime a new version comes around.

This is how I got the .Net 3.5 version of the AJAX Control Toolkit to work in sharepoint 2010.

 

Heres a pretty in depth article that even covers signing DLL's that reference each other.

http://www.geekbeing.com/2010/01/30/sign-me-up-scotty-signing-managed-assemblies-with-ildasm-and-ilasm-duo/




My Blog: http://www.thesug.org/Blogs/ryan_mann1/default.aspx Website: Under Construction

Saturday, May 28, 2011

Analyse event logs for Service Control Manager activities from windowsservices

Sometime you might want to start and stop kind of activities out of event logs for windows services . here is powershell script for this
$eventL = Get-EventLog -LogName "System" -Source "Service Control Manager" ;
Get-Service | ForEach-Object {
$st1 = "";
$st2 = "";
$st3 = "";
$st1 = $_.Status;
$st2 = $_.DisplayName;
$st3 = $_.Name;

#Write-Host $st1 $st2 $st3 -foregroundcolor cyan;

$eventL | where { $_.Message.Contains($st2) -eq "true" } | Select-Object -First 1 | ForEach-Object {

Write-Host $st1 $st2 $st3 -foregroundcolor cyan;
$st4 = "";
$st5 = "";
$st4 = $_.Message;
$st5 = $_.TimeGenerated;
Write-Host $st4 $st5;

}

}
$eventL = $null;

Now that you have decided the culprit windows service, use this script to get whole available history:

$eventL = Get-EventLog -LogName "System" -Source "Service Control Manager" ;

Get-Service | ForEach-Object {

if($_.Name -eq "AAAAAAAAAAAA"){

$st1 = "";
$st2 = "";
$st3 = "";
$st1 = $_.Status;
$st2 = $_.DisplayName;
$st3 = $_.Name;

#Write-Host $st1 $st2 $st3 -foregroundcolor cyan;

$eventL | where { $_.Message.Contains($st2) -eq "true" } | ForEach-Object {

#Write-Host $st1 $st2 $st3 -foregroundcolor cyan;
$st4 = "";
$st5 = "";
$st4 = $_.Message;
$st5 = $_.TimeGenerated;
Write-Host $st4 $st5;

}

}

}
$eventL = $null;

Might be the case , you only want to list down which service is stopped and which one is active :

Get-Service | ForEach-Object {

$st1 = "";
$st2 = "";
$st3 = "";
$st1 = $_.Status;
$st2 = $_.DisplayName;
$st3 = $_.Name;

Write-Host $st1 "," $st2 "," $st3 -foregroundcolor cyan;

}

You may also like:


get last app pool recycle timings

Wednesday, May 25, 2011

Multiple TargetPath under EcmDocumentRouterRule | EcmDocumentRouter , Content Organizer Rules , SharePoint 2010

In SharePoint 2010 with Content organizer  Feature, we can route a document to the target based on predefined rules.

If multiple rules condition satisfy for current document being put in drop off library, priority of rule decides which rule will run.

 

My requirement is :

Either

1. Run multiple rules for single document so that same document may be routed to multiple targets.

Or

2. Under single rule define multiple targetpath so that single document may be routed to multiple locations base don predefined rules.

 

Reference :

http://msdn.microsoft.com/en-us/library/microsoft.office.recordsmanagement.recordsrepository.ecmdocumentrouterrule_properties.aspx

Reply 1 By http://social.technet.microsoft.com/profile/kefang%20chen/?ws=usercard-mini

Hi,

If you want to implement the requirement you mentioned, it is not necessary to use the Content Organizer feature.

You can create an 'ItemAdded' event receiver for all the document libraries. After you uploaded document to library, you can call the method 'SPListItem.CopyTo()' to copy current document to destination.

For this topic you can see the following document.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitem.copyto.aspx

Reply 1.1 By http://social.technet.microsoft.com/profile/mayur%20joshi/?ws=usercard-mini

Chen,

What if I want to avoid customization using Object Model. Can the content organizer then help in this. I have a similar requirement to this. I have location property which is multi value field. Based on the selections need to route the document to the appropriate folders. Can you please highlight how this can be achieved?

Thanks,

Mayur

Reply 1.1.1 By http://social.technet.microsoft.com/profile/hemantrhtk/?ws=usercard-mini

Mayur

In your case it is achivable out of box.

 

Define as much rules as much you have targets.

 

In the condition of each rule you can define, based on meta data field( which is your location ) route the document to desired target.

 Reply 1.1.1.1 by http://social.technet.microsoft.com/profile/mayur%20joshi/?ws=usercard-mini

Hemant,

Wish that was the case, i cant set as much rules because numerous permutation and combination that can happen with the countries (its a multi choice field).

I have raised another thread located here explaining the entire scenario. Any help will be highly appreciated.

Thanks,

Mayur Joshi

 

Monday, May 16, 2011

Two exactly same strings fail while comparison in c# .Net

I had an input field which had a space , some browsers were giving different hex for space in these input fields.

Finally I found , a space may not be a space there are as much as 25 different representations for space in Hex.

.Replace((char)0xA0, ' ') worked but better way is using .Normalize(System.Text.NormalizationForm.FormKC)

Reference : http://msdn.microsoft.com/en-us/library/ebza6ck1(v=vs.80).aspx
and http://msdn.microsoft.com/en-us/library/system.text.normalizationform(v=vs.80).aspx

Sunday, May 15, 2011

"Central Administration>General Application Settings>External Service Connections >Configure Send To Connections" code for this

This is the way we define a connection to a site where we would like to drop our documents.

 

Now in my case there could be hundreds of target sites created by code as and when required.

For each site created I want to write few lines of code which will do exactly what /_admin/OfficialFileAdmin.aspx  page does.

 

 

So i want code for what /_admin/OfficialFileAdmin.aspx ( Central Administration>General Application Settings>External Service Connections >Configure Send To Connections) does.

 

 

just try out like:
SPWebApplication app = SPWebApplication.Lookup(new Uri("http://hemant1236"));
SPOfficialFileHost host = new SPOfficialFileHost(true);
host.OfficialFileUrl = new Uri("http://hemant1236/testsite1/_vti_bin/officialfile.asmx");
host.OfficialFileName = "hemant1236Test1saurabh";
host.ShowOnSendToMenu = true;
host.Action = SPOfficialFileAction.Move;

host.Explanation = "created at Time" + DateTime.Now.ToString() + " by custom utility.";

app.OfficialFileHosts.Add(host);

app.Update();

Friday, May 13, 2011

Name cannot begin with the '\' character, hexadecimal value 0x5C

Hi

 

While extending a claim based web application I get the error :

Name cannot begin with the '\' character, hexadecimal value 0x5C. Line 858, position 42.

Troubleshoot issues with Microsoft SharePoint Foundation.

Correlation ID: b2bdf10b-33d2-4630-8bab-8054c6ce310c

Date and Time: 5/13/2011 3:16:10 AM

 

any idea why it happen so .

 

In the log:

 

 

05/13/2011 04:03:37.57     w3wp.exe (0x0954)                           0x1A00    SharePoint Foundation             Runtime                           tkau    Unexpected    System.Xml.XmlException: Name cannot begin with the '\' character, hexadecimal value 0x5C. Line 858, position 42.    at System.Xml.XmlTextReaderImpl.Throw(Exception e)     at System.Xml.XmlTextReaderImpl.ParseAttributes()     at System.Xml.XmlTextReaderImpl.ParseElement()     at System.Xml.XmlTextReaderImpl.ParseElementContent()     at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)     at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)     at System.Xml.XmlDocument.Load(XmlReader reader)     at System.Xml.XmlDocument.Load(String filename)     at Microsoft.SharePoint.Administration.SPAspConfigurationFile.ApplyZoneSettingsToWebConfig(Uri responseUri, SPIisSettings settings)     at Microsoft.SharePoint.Administration.SPWebApplication.Provision()     at Microsoft.SharePo...    16bc3d6e-05e4-45d0-984c-813ed7e0c515
05/13/2011 04:03:37.57*    w3wp.exe (0x0954)                           0x1A00    SharePoint Foundation             Runtime                           tkau    Unexpected    ...int.ApplicationPages.ExtendWebFarmPage.BtnSubmit_Click(Object sender, EventArgs e)     at System.Web.UI.WebControls.Button.OnClick(EventArgs e)     at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)     at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)    16bc3d6e-05e4-45d0-984c-813ed7e0c515

Reply 1


In the app keys for main web application which is being extended; there was a key which referred a shared location like : "\\hemant1236\dropOff". The characters \\ in this app keys were the culprit. When I commented out this key , the web application was able to extend successfully.

Tuesday, April 19, 2011

get last app pool recycle timings

c:\Windows\System32\inetsrv\appcmd list wp  gives you all the process IDs

and on powershell  go for :

(Get-Process -Id [processID]).StartTime

You may also like:

Analyse event logs for Service Control Manager activities from windows

Sunday, April 17, 2011

Search History in SharePoint 2010

Did anyone got a chance to work on Search History?

 

We are able to get top Search Queries  , but we need to maintain log of all search keywords entered by all the users.  Is there something out of box for this?

 

Reply 1

here are some default Search Reports, but i do not recall it does keep track ALL the search keywords entered by user, the closest

You may refer http://blogs.msdn.com/b/ecm/archive/2010/05/03/web-analytics-in-sharepoint-2010-insights-into-reports-and-metrics.aspx for more information about the default search report.

 

Reply 1,1 we have tried it dear but we need to track all.Please help.Track all search keywords entered to be very specific .

Reply 1.1.1 You can create a hidden web part, place the hidden web part in the Search Result page, and the web part will retrieve the HTTP GET parameter, q=keyword, store it to a search keyword table, and make a report out of that table.




Kiat Hau, Goh http://kiatsplayground.blogspot.com/

Reply 1.1.1.1 If there is nothing out of box in SharePoint 2010 for this  , we will go for omniture - its just similar to google analytic .

 

Friday, April 15, 2011

SharePoint 2010 with IE 9

Hi

 

In IE 8 we used to have a  load bar in the browser . But in IE 9 when the page is loading a circle keeps on moving in the address bar-tab area.

 

I have a question now for my SharePoint site.

 

 

after the circle in the address  bar – tab  has stopped rotating  and when the page actually comes to the screen , there is a difference of 7 seconds!!!!!

 

 

If you have concrete explanation for this  or something like a wild guess please reply down.

 

P.S. 1 The issue is with latest version of IE 9 also downloaded today

P.S.2 One of the comment I got offline:

http://support.microsoft.com/kb/2398082

This issue can also occur if Internet Explorer 9 is running in Software Rendering mode.

By default, Internet Explorer 9 uses GPU Rendering mode. However, some outdated video cards and video drivers do not support GPU hardware acceleration. If Internet Explorer 9 determines that your current video card or video driver does not support GPU hardware acceleration, Internet Explorer 9 uses Software Rendering mode.

To determine whether Internet Explorer 9 is using Software Rendering mode, follow these steps:

Start Internet Explorer 9.

Click Internet Options on the Tools menu.

On the Advanced tab, locate the Accelerated graphics section.

Verify that the Use software rendering instead of GPU rendering check box is selected.

If this option is selected, Internet Explorer 9 is running in Software Rendering mode. If the option is greyed out, your current video card or video driver does not support GPU hardware acceleration.

Reply 1 http://social.technet.microsoft.com/profile/smidha/?ws=usercard-mini

I've experienced the same in Mozilla as well.

For IE9, also checked IE Options-> advanced -> Accelerated graphics section -> Use software rendering instead of GPU rendering check box is selected.

But no luck. A quick solution will be helpful.

Tuesday, February 22, 2011

User's Role Specific Theme - SharePoint 2010

e are digging out the possibility to give user's role specific themes in SharePoint 2010.

We are OK with going for custom coding for this.

Do you have any clues how to achieve this?

so based on:

 

http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/bc5c26e8-4a84-4120-9f44-ffb83db73836

http://efreedom.com/Question/1-2640711/Dynamically-Adding-CSS-File-ASPNET-Server-Control

 

http://stackoverflow.com/questions/2153310/user-specific-theme-in-sharepoint

http://efreedom.com/Question/1-2640711/Dynamically-Adding-CSS-File-ASPNET-Server-Control

 

we are going to override css in our custom control referred in the master page

 

Reply 1 http://social.technet.microsoft.com/profile/ishaan%20puniani/?ws=usercard-mini

take a look at :

 

http://social.msdn.microsoft.com/Forums/en-US/sharepoint2010general/thread/bc5c26e8-4a84-4120-9f44-ffb83db73836

to make it light weight you can write only those classes that modifies the Look nd feel of the site in the CSS .

Thursday, February 17, 2011

List Level backups for multiple sub sites -Poweshell

In SharePoint projects, there are scenarios, where a number of sub sites are created using a same template (now WSP).

We come across requirements where these templates require updation in due course of time.   And hence the sub sites already created may require an update. But it is not feasible to go to each and every sub site created and make the changes.

So best way could be take backup of variable components (   Lists) and then recreate all the sub sites and then restore back the lists to the newly   created sub sites.

The below mentioned   PowerShell script can be used to take backup export the content  from a specific named list in a shared folder structure, where each sub site will have a specific folder for backup in format cmp :

 

$mainBackuppath="\\abc2010\exportimport"

$File="export.txt"

Get-SPSite -Identity $spsite | Get-SPWeb -limit all| ForEach-Object {

 

 

 

if(($_.URL -eq $spsite+"/xyz") -or ($_.URL -eq $spsite+"") -or ($_.URL -eq $spsite+"/lmn") )

{

write-host -f Green  "Skipping " $_.URL

"Skipping " + $_.URL | Out-File $File -append

 

}

else

{

 

write-host -f Green "processing for "  $_.URL

"processing for " + $_.URL | Out-File $File -append

$currentSubSiteTitlewithoutspace= ""

$currentSubSiteTitlewithoutspace=$_.Title.Replace(" ","")

write-host -f Blue "Creating Directory: "$mainBackuppath"\"$currentSubSiteTitlewithoutspace

"Creating Directory: "+$mainBackuppath+"\"+$currentSubSiteTitlewithoutspace | Out-File $File -append

$error.clear()

 

[IO.Directory]::CreateDirectory($mainBackuppath+"\"+$currentSubSiteTitlewithoutspace)

if($error.count -gt 0){$error | out-file $File -append}

 

 

 

$filesystemPath=""

$filesystemPath = $mainBackuppath+"\"+$currentSubSiteTitlewithoutspace

 

if(Test-Path $filesystemPath)

{

$filesystemPath =$mainBackuppath+"\"+$currentSubSiteTitlewithoutspace+"\"+$currentSubSiteTitlewithoutspace+".cmp"

$DocLibPath=""

$DocLibPath= "/"+$_.Title+"/Shared Documents"

write-host  -f Yellow "Taking Backup for "$DocLibPath " at location " $filesystemPath "...."

"Taking Backup for "+$DocLibPath +" at location "+ $filesystemPath +"...."| Out-File $File -append

 

$error.clear()

export-spweb -identity $_.URL   -path  $filesystemPath   -ItemUrl $DocLibPath -Force -IncludeUserSecurity -IncludeVersions All | Out-File $File -append

if($error.count -gt 0){$error | out-file $File -append}

 

write-host  -f Yellow "Backup for "$DocLibPath " at location " $filesystemPath "Completed."

"Backup for "+$DocLibPath +" at location "+ $filesystemPath +"Completed."| Out-File $File -append

 

}

 

else

{

write-host  -f Red $filesystemPath  " does not exist."

$filesystemPath  +" does not exist." | Out-File $File -append

}

 

write-host -f Green "End of "  $_.URL"`n`n`n`n"

"End of "+  $_.URL+"`n`n`n`n"| Out-File $File -append

 

 

}

 

}

 

 

The below mentioned   PowerShell script can be used to restore backup /exported content  shared folder structure, where each sub site will have a specific folder for backup in format cmp, to the subsites created using new template :

 

 

$spsite= "http://abc:1104"

$mainBackuppath="\\abc2010\exportimport"

$File="export.txt"

Get-SPSite -Identity $spsite | Get-SPWeb -limit all| ForEach-Object {

 

 

 

if(($_.URL -eq $spsite+"/xyz") -or ($_.URL -eq $spsite+"") -or ($_.URL -eq $spsite+"/lmn") )

{

write-host -f Green  "Skipping " $_.URL

"Skipping " + $_.URL | Out-File $File -append

 

}

else

{

 

write-host -f Green "processing for "  $_.URL

"processing for " + $_.URL | Out-File $File -append

 

$currentSubSiteTitlewithoutspace= ""

$currentSubSiteTitlewithoutspace=$_.Title.Replace(" ","")

write-host -f Blue "Checking if directory exist for current web"

"Checking if directory exist for current web" | Out-File $File -append

$filesystemPath=""

$filesystemPath =$mainBackuppath+"\"+$currentSubSiteTitlewithoutspace+"\"+$currentSubSiteTitlewithoutspace+".cmp"

 

if(Test-Path $filesystemPath)

{

 

$DocLibPath=""

$DocLibPath= "/"+$_.Title+"/Shared Documents"

write-host  -f Yellow "Restoring  Backup at  "$DocLibPath " from  " $filesystemPath "...."

"Restoring  Backup at  "+$DocLibPath +" from  " +$filesystemPath +"...." | Out-File $File -append

 

$error.clear()

Import-SPWeb -Identity $_.URL -Path $filesystemPath  -IncludeUserSecurity  -Force -UpdateVersions Overwrite | Out-File $File -append

if($error.count -gt 0){$error | out-file $File -append}

 

write-host  -f Yellow "Backup for "$DocLibPath " at location " $filesystemPath "Completed."

"Backup for "+$DocLibPath +" at location " +$filesystemPath +"Completed." | Out-File $File -append

 

}

else

 

{

write-host  -f Red $filesystemPath  " does not exist."

$filesystemPath  +" does not exist." | Out-File $File -append

 

}

 

 

 

write-host -f Green "End of "  $_.URL"`n`n`n`n"

"End of "  +$_.URL+"`n`n`n`n" | Out-File $File -append

 

 

}

 

}

 

___________________________________________________________________________________________________________________

description of commands being used:

 

 

1.       Get-SPSite  : creates object for the spsite as given by identity parameter.

2.       Get-SPWeb -limit all  gets all the  spweb in the site collection

 

3.       Out-File $File –append   :  put entry in a log file.

 

4.       write-host -f Green "processing for "  $_.URL :  to write a text on screen

 

5.       $error.clear() : clears the current error

6.       [IO.Directory]::CreateDirectory()  : used to create a folder on the shared path

 

 

7.       if($error.count -gt 0){$error | out-file $File –append :  if the error count is greater than 0, that is logged in the log file.

 

 

8.       Test-Path $filesystemPath  : verifies if the folder has been created

 

9.       export-spweb -identity $_.URL   -path  $filesystemPath   -ItemUrl $DocLibPath -Force -IncludeUserSecurity -IncludeVersions All | Out-File $File –append

: the heart of all commands, which is actually creating the cmp file

 

10.   Import-SPWeb -Identity $_.URL -Path $filesystemPath  -IncludeUserSecurity  -Force -UpdateVersions Overwrite | Out-File $File –append

: the heart of all commands, which is actually restoring   the cmp file.