Tuesday, June 14, 2016

Get SharePoint Document Library Size using PowerShell


There was requirement to get the document library size. Using PowerShell I able to resolve this requirement.

This post is about getting actual Document Library size using PowerShell.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Add-PSSnapin Microsoft.SharePoint.PowerShell 

$siteURL = "YourSitename" 
$site = new-object Microsoft.SharePoint.SPSite($siteURL)


foreach ($web in $site.AllWebs)
{
 foreach ($list in $web.Lists)
{

        if($list.BaseType -eq "DocumentLibrary")   
      {
    $listSize = 0
   foreach ($item in $list.items) 
        { 
          $listSize += ($item.file).length
        }
     "Web Name: "+$web.Title+", Library Name: "+$list.Title+", Size: "+[Math]::Round(($listSize/1KB),2)+"KB"     
}
}
}

I hope this small script will save your time.

Thursday, March 17, 2016

Query User Information List gives :Error 404 List Not found- SharePoint 2013

Being a SharePoint developer we all know that 
The User Information List stores information about a user by having some metadata set up for the user. Some examples are Picture, Email, DisplayName, LoginName etc. ) This list is only visible to and accessible by administrators.
However today we faced very weird issue that not able to access this hidden list. we can browse it under "/_catalogs/users" but we were not able to query it

Problem : 
 We were not able to query the User Information List in SharePoint 2013 On-Premise.
Tried following stuffs :
1. http://your-site-name/_vti_bin/ListData.svc/UserInformationList
2. http://your-site-name//_api/web/lists/GetByTitle(‘User Information List')
3. In PowerShell - 
$SITE = GET-SPSITE "HTTPS://your-site-name"
$WEB = $SITE.ROOTWEB

$LIST = $WEB.LISTS["USER INFORMATION LIST"]
All the above was giving the 404 error, List was not exist under the $web.Lists - which was very weird.
Solution:
After some r&d found the way to access it using SiteUserInfoList object

$web.SiteUserInfoList.Items
using this we can get the items of User information list.

Happy Coding!






Sunday, December 27, 2015

Office 365 People Search:Hide default result



Out of the box, People search result webpart shows the list of people as a result.

However, I had a requirement to remove the default people search coming in result webpart when page loads.

with the default query :
- {searchboxquery}contentclass=spspeople -accountname:rapidcircle.in


Spent few hours to find the solution finally got this useful tip from my Search guru MIKAEL SVENSON

To remove the default result need to bind the query with {?<query>}

the {?{searchboxquery}} will remove everything in the query if the {searchboxquery} variable is empty

Hope this small piece of information will save your time.





Tuesday, September 29, 2015

Permission denied for "Add and Customize Pages" in Sharepoint Online


Problem:

I have created root site in SharePoint Online, weird problem I started facing is being a site administrator I was not able to customize the page/ upload the any page or master page.

As in image below, for some reason I am set as Deny to "Add and Customize Pages".






The problem is related to 'Scripting Capabilities' being turned off by default for the root site collection in Office 365.

I found some article on community:

https://support.office.com/en-us/article/Turn-scripting-capabilities-on-or-off-1f2c515f-5d7e-448a-9fd7-835da935584f?ui=en-US&=amp&rs=en-US&ad=US

It mentions that turning on scripting through the Sharepoint Admin Settings and wait around 24 hours. However, this did not work for me. still the issue was there.

Following lines of script did a trick.

Solution:

Connect-SPOService -Url https://<yoursitename>-admin.sharepoint.com -credential <admincredentials>

Set-SPOsite https://<your root site url> -DenyAddAndCustomizePages 0


And it immediately started working!

Happy Learning!

Monday, September 28, 2015

Display Template HTML file missing in SharePoint online

Today was trying to work on the display template in SharePoint Online.

As documented every where, that can go to Site Galleries->Master Page->Display Templates :     <your site url>/_catalogs/masterpage/Forms/AllItems.aspx and display templates folder, to get the existing templates.

However, I was just seeing all the .js files not the HTML where I supposed to work.

Finally found the cause is Publishing Feature.

Solution:

We must turn on SharePoint Server Publishing Infrastructure feature in the Site Collection Features. for the HTML pages to show up, from there we can edit the HTML files and create new display templates.

This is not documented any where.

Hope small tip will save your time!


Monday, May 11, 2015

Nintex 2013 Workflow Action: "Commit pending changes"


Commit pending changes is not well known action of Nintex, However very useful when you have scenario like I faced. 

I had a requirement like first to update the list item, and immediately need to take the count of updated items.

I spent quite amount of time to achieve this, First tried by doing simple workflow

1. Update list item

2. Query list (query the same list which updated)




Here after running this, started getting uncertain results. Sometime it works and fails.

Started applying workarounds to that

Tried to apply “Pause for” action in between, like below image.







Result was again uncertain, it pause was getting struck, was not resuming the workflow even after specified time.

I goggled and found many issues are reported for the same issue,

https://community.nintex.com/thread/2979

Third workaround was to add some loop which can add some pause before query, somehow even after safe loop, result was uncertain.


Finally found the impressive feature of Nintex, which has saved from all these hassles.

“Commit Pending Changes” – How exactly it is working ?

SharePoint workflow not starting the workload immediately, that means if I am adding update list item action, so its not sure that it will go and update the item at the same time, SharePoint doing batch job for it. As a result we are getting wrong result while querying it immediately.

As well other important thing to remember that The SharePoint workflow engine doesn't necessarily commit batched operations in the order they are displayed on the designer

Commit Pending Changes will wait/pause the workflow or say it waits until the workflow commits all other batch job started then after will move further.





This is very useful when you want workflow engine to follow the order you specified in workflow designer, or where the scenario where dependency on next to next actions.

Impressed with this Workflow action, Hope this piece of information will save your time!








Wednesday, April 29, 2015

Nintex 2013: Show display name in email notification for person field


In Nintex 2013, requirement was to show the user's "Display name" in email. looks a very simple issue by looking at the definition. However, to achieve this in workflow have to choose proper way to implement.
Two options are available to get this.

1. Using "Call web service" action
2. Using " Query user profile"


To move ahead with first step, we need to use Regular expression, web service and query xml  as described here in https://community.nintex.com/thread/1353 lots of configuration require to make this work. as well to store credentials of admin to call the web service, need to make the constant in Nintex management.

So In my implementation, I choose second option, fairly simple to use.

Steps to use "Query user profile" action to get display name:

1. Add "Query user Profile" from actions tab




 2. Double click to configure it, and select the person field , here selecting "Created By" field of the custom list




3. Expand the properties to retrieve, and select "Name" , click on Add



4. Select the variable name where you want to save query result, here using string variable named "CreatedByDisplayName"

5. Now, add the email notification action and from insert reference add the workflow variable.



6. That's all we are done.

No configuration/web service call/credentials require to store.

Hope this will help you!