2013-06-10

Here’s some Powershell Scripts that I have used to help me solve common problems in SharePoint. Please share yours with me if you have them!

##########################################################################################
############### Jayaraja ####################
############### http://www.sharepointlovers.com ####################
############## Bugs or Thoughts are welcome 🙂 sweetraskels@gmail.com ##################
##########################################################################################

#Add Sharepoint Powershell Snap if its not loaded
$powershellSnapin = “Microsoft.Sharepoint.Powershell”
if ((Get-PSSnapin -Name $powershellSnapin -ErrorAction SilentlyContinue) -eq $null )
{
Write-Host "--------------------------------- Adding sharpoint powershell snapin -------------------------"
Add-PsSnapin $powershellSnapin
}

if(($args[0] -eq 'Tech') -or ($args[0] -eq $null) -or ($args[0] -eq "")) {
$site = new-object Microsoft.SharePoint.SPSite("url of ur iso environment")

}
elseif($args[0] -eq 'Dev') {
$site = new-object Microsoft.SharePoint.SPSite("dev environment url")
}
elseif ($args[0] -eq 'Model') {
$site = new-object Microsoft.SharePoint.SPSite("Model environment url")
}
elseif ($args[0] -eq 'Prod') {
$site = new-object Microsoft.SharePoint.SPSite("Production environment url")
}
else {
Write-Host "$(Get-Date -Format o) Environment not specified - please pass appropriate environment to deploy -"
exit
}

#function to check for the timer job status
function CheckTimerJobStatus ( [String]$TimerJobName)
{
[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”)
$isDisabled=Get-SPTimerJob $TimerJobName | select IsDisabled
return $isDisabled
}

#function to enable the timer job if its disabled
function EnableTimerJobIfDisabled ( [String]$TimerJobName)
{
[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”)
if(CheckTimerJobStatus)
{
Get-SPTimerJob $TimerJobName
Enable-SPTimerjob -Identity $TimerJobName
write-host "Enabled $TimerJobName"
}
}

#Disable the Timer Job if its Enabled
function DisableTimerJobIfEnabled ( [String]$TimerJobName)
{
[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”)
Get-SPTimerJob $TimerJobName | Disable-SPTimerJob
write-host "Disabled $TimerJobName"
}

#use this to check the timer job status
#CheckTimerJobStatus -TimerJobName "nameofthetimerjob"
function Upload-SPFile ( [String]$file, [string]$list,[string]$sweb)
{
[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”)

if($sweb -ne "Root")
{
$web = $site.AllWebs | where { $_.name -eq $sweb}
}
else
{
$web = $site.RootWeb
}
$spList = $web.GetFolder($list)
$spFiles = $spList.Files
$docLibrary = $web.Lists[$list]
$folder = $docLibrary.RootFolder
$docName =Split-Path $file -Leaf
$spFilePath = ("/" + $DocName)
$spFullPath = $folder.Url + $spFilePath
$fileInfo = Get-ChildItem $file
$fileContent = Get-Content $fileInfo -encoding byte
$fileName = "{0}/{1}" -f $list, $fileInfo.Name
$fileMetadata = New-Object HashTable
write-host "Uploading...."
write-host "List:" $list
write-host "Document:" $docName
$spFiles.Add($fileName, $fileContent, $fileMetadata, $true)
write-host "Verifying..."
write-host "List:" $list
write-host "Document:" $docName
write-host "Status: " $web.GetFile($spFullPath).Exists
}

function Delete-List [string]$sweb,[string]$list)
{
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Sharepoint")

if($sweb -ne "Root")
{
$web = $site.AllWebs | where { $_.name -eq $sweb}
$splist=$web.Lists.TryGetList($list)
if($splist -ne $null)
{
write-host "Deleting ....."
$web.Lists.Delete[System.Guid]$web.Lists[$list].ID)
}
else
{
write-host $list "List Does Not Exist in" $web
}
}
else
{
$web = $site.RootWeb
$splist=$web.Lists.TryGetList($list)
if($splist -ne $null)
{
write-host "Deleting ....."
$web.Lists.Delete[System.Guid]$web.Lists[$list].ID)
}
else
{
write-host $list "List Does Not Exist in" $web
}
}
}
#Uploads the list template to the site template gallery
function UploadListTemplate ( [String]$fileName)
{
[void][System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”)
write-host "Uploading $File Template to List Template Gallery"
$web = $site.RootWeb
$spFolder = $web.getfolder("List Template Gallery")
$spfilecollection = $spfolder.files
$file = get-item $fileName
$spfilecollection.Add("_catalogs/lt/$fileName", $file.OpenRead(), $true)
}
#Create List from templates (list template gallery)
function CreateCustomListFromTemplate[string]$listName,[string]$templateName)
{
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
write-host "Creating Custom List($listName) from List Template $templateName"
$web = $site.RootWeb
$templates=$site.GetCustomListTemplates($web)
$exist=0
foreach($template in $templates)
{
write-host Verifying $templateName in "List Template Gallery"
#$template.Name
if($template.Name -eq $templateName)
{
Write-host " Template Found"
$listTemplates = $site.GetCustomListTemplates($web)
Write-host "Creating....."
$web.Lists.Add($listName, $listName, $listTemplates[$templateName])
Write-host "Created List " $template.Name
exit
}
else
{
write-host "Cant verify the existance of the template in the Template Gallery"
}
}
}
#Mofies the column name from x to y, eg" renaming title to any string say xyz in the list
function ModifyColumnName[string]$sweb,[string]$ListName,[string]$field,[string]$value)
{
if($sweb -ne "Root")
{
$web = $site.openweb($web)
}
else
{
$web = $site.RootWeb
}
$spList = $web.Lists[$ListName]
$spAssignment = Start-SPAssignment
$spList.Fields[$field]=$value
write-host $column
$spList.Update()
Stop-SPAssignment $spAssignment

}
function AddItemLinkList[string]$sweb,[string]$slist,[string]$desc,[sting]$url,[string]$notes)
{
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
Write-host "Adding items to the Link List"
if($sweb -ne "Root")
{
$spweb = $site.openweb($web)
}
else
{
$spweb = $site.RootWeb
}
$list = $spweb.Lists[$slist]
$item = $list.Items.Add()
$urlValue = New-Object Microsoft.SharePoint.SPFieldUrlValue("")
$urlValue.Description = $desc;
$urlValue.Url = $itemUrl
$item["URL"] = $url
$item["Notes"]=$notes
$item.update()
$List.update()
$spweb.Dispose()
$site.Dispose()
}

################### EXECUTION ########################
##### Create List From Template #######
###this will write the exception to the log and keep running
trap
{
Write-Host
Write-Host $_.exception.message
continue
}

###create list from the template
#CreateCustomListFromTemplate -listName "listname" -templateName "listtemplatename"
#### Upload List Template ####
#UploadListTemplate -file "listtemplate.stp"

#### Delete List ####
#use sweb parameter as the web name if not use Root for root site
#Delete-List -sweb "subsitetitle" -list "testing"
#Delete-List -sweb "Root" -list "test"

#### Upload File to Document Library ####
#use sweb parameter as the web name if not use Root for root site
#Upload-SPFile -list "testing" -file "./filename.extension" -sweb "subsite"
#Upload-SPFile -list "test" -file "./filename.extension" -sweb "Root"

#### Check Timer Job Status ####
#use this to check the timer job status
#CheckTimerJobStatus -TimerJobName "timerjobname"

#### Enable Timer Job ####
#Enable the timer job if it is disabled
#EnableTimerJobIfDisabled -TimerJobName "timerjobname"

#### Disable Timer Job ####
#Disbale the timer job if it is enabled
#DisableTimerJobIfEnabled -TimerJobName "timerjobname"

####### Modifies column title #####
#ModifyColumnName -sweb "root" -ListName "ListName" -field "eg-title" -value "value-replacing-title"
#ModifyColumnName -sweb "webname" -ListName "ListName" -field "eg-title" -value "value-replacing-title"
######### Add item to Link List ######################
#AddItemLinkList -sweb "Root" -desc "DescriptionText" -url "url of the page" -notes "notes for the url added"
#AddItemLinkList -sweb "webName" -desc "DescriptionText" -url "url of the page" -notes "notes for the url added"

 

About the author 

Jayaraja Jayaraman