Reset unique permission for SharePoint document library and files

Sometime we need to reset the unique permission for document library, sub folders and files. If the document library has only 1-2 documents then we can handle it manually, but if you have thousands of files and folder so its quite difficult to reset it for all one by one. Below piece of code can help to reset unique permission for document library and its content. This script will take the top level permission from document library.


function ResetUniquePermission {
Param(
[Parameter(Mandatory = $true, HelpMessage="Enter the site url")][ValidateNotNullorEmpty()][string] $SiteURL ,
[Parameter(Mandatory = $true, HelpMessage="Enter the library name")][ValidateNotNullorEmpty()][string] $LibraryName,
[Parameter(Mandatory = $true, HelpMessage="Total number of files")][ValidateNotNullorEmpty()][int] $TotalFiles

)

$Web = Get-SPWeb $SiteURL 
$List= $Web.Lists[$LibraryName]
$Query = New-Object Microsoft.SharePoint.SPQuery
$Query.ViewXml =  @"
<View Scope="RecursiveAll">
    <Query>
        <OrderBy><FieldRef Name='ID' Ascending='TRUE'/></OrderBy>
    </Query>
    <RowLimit Paged="TRUE">$TotalFiles</RowLimit>
</View>
"@;

$Items = $List.GetItems($Query)
for($j=0;$j -lt $Items.Count ;$j++)
{
    $Items[$j].ResetRoleInheritance()
    Write-Host "Permission reset done for file "$Items[$j]["Title"] -ForegroundColor Green
}
}

Export SharePoint List schema to CSV file

In this article I am going to demonstrates How to Export SharePoint custom list schema to CSV file. This example applies to SharePoint 2010 and SharePoint 2013 environment.


[system.reflection.assembly]::loadwithpartialname("microsoft.sharepoint")
$listName="DemoList";
$siteURL="http://localhost/";
$csvPath="C:PowerOutput"+ $listName + ".csv";
$oSite= New-Object Microsoft.SharePoint.SPSite($siteURL)
$oWeb=$oSite.OpenWeb()
$oList=$oWeb.Lists[$listName]
#Get only custom fields which are created by user
$oList.Fields | ?{$_.CanBeDeleted -eq $true -and $_.Hidden -eq $false} | select Title,Internalname,Type |Sort-Object title| Export-Csv -Path $csvPath -Encoding ascii -NoTypeInformation
$oWeb.Dispose()
$oSite.Dispose()

PowerShell script to Upload multiple Custom List template and create custom list instances

I this article I am going to present you to create multiple SharePoint Custom list instances using PowerShell.It is very helpful when we are working on migrating SharePoint environment.

In below example list name is same as the template which we are uploading to template gallery.

Add-PSSnapin "Microsoft.SharePoint.PowerShell"

# Custom template path
$Path = "C:\CustomTemplate"

# Your site url
$oSite = Get-SPSite("htpp://localhost/")

# Get the root web
$oWeb = $oSite.RootWeb

# Get the list template gallery
$spLTG = $oWeb.GetFolder("List Template Gallery")

# Get the list template gallery Collection
$spcollection = $spLTG.files

# loop all stp files and upload/create custom list
Get-ChildItem $Path -Filter "*.STP" |
ForEach-Object {
$Templatefile = get-item $_.FullName
$catlogs="_catalogs/lt/" + $_.Name
$lstDesc="Description :" + $_.BaseName
$spcollection.Add($catlogs, $Templatefile.OpenRead(), $true)
$CustomlistTemplates = $oSite.GetCustomListTemplates($oWeb)
$oWeb.Lists.Add($_.BaseName, $lstDesc, $CustomlistTemplates[$_.BaseName])
Write-Host $_.BaseName+" List has been created" -foregroundcolor green
}

$oWeb.Dispose()
$oSite.Dispose()

Download multiple list templates from SharePoint Template Gallary.

When we are working on migrating SharePoint Custom list to other SharePoint site.We have to save that list as template and restore again to another server.But suppose you are having so many list then ???

So, In this article I am going to help to you to download all SharePoint list template from Template gallery to local drive and in my another article we will work on upload multiple Custom List templates from local drive and create custom list instances.

Here is my scenario, today I have saved multiple list as template to template gallery and now I wanted to download that.Now by using below code you can simply download the all stp files which you created today.

#Function to copy file from SharePoint template gallary to lo drive
Function DownloadStp($SPFolderURL, $localFolderPath)
{
	$SPFolder = $oWeb.GetFolder($SPFolderURL)
	foreach ($File in $SPFolder.Files)
	{
		#By using below if condition you will get all the templates which are created today.
		if($File.TimeCreated -gt ($(Get-Date).AddDays(-1)))
		{
			$Data = $File.OpenBinary()
			$FilePath= Join-Path $localFolderPath $File.Name
			[System.IO.File]::WriteAllBytes($FilePath, $data)
		}
	}
	foreach ($SubFolder in $SPFolder.SubFolders)
	{
		if($SubFolder.Name -ne "Forms")
		{
			DownloadStp $SubFolder $localFolderPath
	    }
	}
}
$oWeb = Get-SPWeb "http://localhost/"
$oLTG =  $oWeb.Lists["List Template Gallery"].RootFolder
$localDrivePath = "C:\PowershellOutput\StpFiles"
#calling DownloadStp function to download stp files to localDrivePath
DownloadStp $oLTG $localDrivePath 
#disposing web object 
$oWeb.Dispose()

In my next article I am going to help you to create SharePoint custom list using multiple template which are saved in you local drive.
PowerShell script to Upload multiple Custom List template and create custom list instances

SharePoint List CRUD Operation using PowerShell Management

This post is going to help you in learning how to do basic SharePoint List operations (CRUD – Create, Read, Update and Delete) using SharePoint Management Shell or Windows PowerShell.

Lets open SharePoint Management Shell or open Windows PowerShell.When we are working on SharePoint Server there are two possibilities exists: either select the SharePoint Management Shell or Open Windows PowerShell.If We are using SharePoint Management Shell then SharePoint snap-in will already be installed.If you are using Standard PowerShell console, we can install the snap-in by entering the following command:

Add-PSSnapIn Microsoft.SharePoint.PowerShell

we can check the list of installed snap-in by using this command

Get-PSSnapIn

So, here is my list like below screenshot.

CRUDPowershell1

1) Create Item into SharePoint List

$webURL="http://optimumview"
$lstName="DemoList"
$oWeb=Get-SPWeb -Identity $webURL
$oList=$oWeb.Lists[$lstName]
$oListItem = $oList.items.add()
$oListItem["Title"]="Test-Item-0"
$oListItem["DemoLocation"]="US"
$oListItem["ProjectName"]="POW-JO-09"
$oListItem.Update()

2) Read single list item

$webURL="http://optimumview"
$lstName="DemoList"
$oWeb=Get-SPWeb -Identity $webURL
$oList=$oWeb.Lists[$lstName]
#To read single item uncomment below code
#$oListItem = $oList.GetItemById("1")
#Read multiple list item
$oListItem = $oList.Items | where {$_['ProjectName'] -like "IND1*"}
if($oListItem -ne $null)
{
$oListItem | ForEach-Object {
Write-Host $_['ID'] -foregroundcolor green
Write-Host $_['Title'] -foregroundcolor green
Write-Host $_['DemoLocation'] -foregroundcolor green
Write-Host $_['ProjectName'] -foregroundcolor green
}
}
else
{
Write-Host "No Items are found !!" -foregroundcolor red
}

3) Update SharePoint List item

#Update multiple list item

$webURL="http://optimumview"
$lstName="DemoList"
$oWeb=Get-SPWeb -Identity $webURL
$oList=$oWeb.Lists[$lstName]
$oListItem = $oList.Items | where {$_['ProjectName'] -like "IND*"}
if($oListItem -ne $null)
{
$oListItem | ForEach-Object {
$_['Title']="Test1" + $_['ID']
Write-Host "Item id:" $_['ID'] " has been updated!" -foregroundcolor green
$_.Update()
}
}
else
{
Write-Host "No Items are found !!" -foregroundcolor red
}

4) Deleting SharePoint List item

#Deleting multiple list item
$webURL="http://optimumview"
$lstName="DemoList"
$oWeb=Get-SPWeb -Identity $webURL
$oList=$oWeb.Lists[$lstName]
$oListItem = $oList.Items | where {$_['ProjectName'] -like "GLT*"}
if($oListItem -ne $null)
{
$oListItem | ForEach-Object {
$_.Delete()
Write-Host "Item id:" $_['ID'] " has been Deleted!" -foregroundcolor green
}
}
else
{
Write-Host "No Items are found !!" -foregroundcolor red
}