CSOM SharePoint PowerShell Demo


Introduction

  1. CSOM is an acronym for Client Server Object Model
  2. CSOM provides a subset of the Server Object Model
  3. CSOM Supports remote execution via JavaScript and .NET

Download Links

  1. SharePoint 2010 CSOM - http://www.microsoft.com/en-us/download/details.aspx?id=21786%20
  2. SharePoint 2013 CSOM - http://www.microsoft.com/en-us/download/details.aspx?id=35585
  3. SharePoint Online CSOM - http://www.microsoft.com/en-us/download/details.aspx?id=42038

Loading DLL's

Once the required Client Components are installed we can import the required DLL and use in our PowerShell Script.
Note: In this Demo, we are using SharePoint Online Client Components.
 #Method 1
Import-Module 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll'
#Method 2
Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll'

How to Use?

  1. Declare the Variable
  2. Load the context
  3. Execute the Query
  4. Use the declared variable as used in Step 1
Let's dive into the demo.

Update SharePoint List Description

  • Created a New List 'PowerShell CSOM'
  • Added one sample item in the list
  • Left Description Intentionally blank

#Import the required DLL
Import-Module 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll'
#OR
Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll'

#Mysite URL
$site = 'https://Domain.sharepoint.com/'

#Admin User Principal Name
$admin = 'Admin@Chensoffice365.OnMicrosoft.Com'

#Get Password as secure String
$password = Read-Host 'Enter Password' -AsSecureString

#Get the Client Context and Bind the Site Collection
$context = New-Object Microsoft.SharePoint.Client.ClientContext($site)

#Authenticate
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($admin , $password)
$context.Credentials = $credentials

$list = $context.Web.Lists.GetByTitle('PowerShell CSOM')
$context.Load($list)
$list.Description = "CSOM PowerShell - Did it!!!"
$list.Update()
$context.ExecuteQuery()

Explore the Context

$context = New-Object Microsoft.SharePoint.Client.ClientContext($site)
$context | GM
The above code shows all the methods and properties - Go Object ! Now we got to know the information to trigger some methods to meet client requirements.

Update SharePoint Online List Item

#Common Mistakes
#To add item to List
$Columns = $context.Web.AvailableFields
$Columns
Error
An error occurred while enumerating through a collection: The collection has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.. At line:2 char:1 + $Columns + ~~~~~~~~ + CategoryInfo : InvalidOperation: (Microsoft.Share...t.Client.Field]:d__0) [], RuntimeException + FullyQualifiedErrorId : BadEnumeration
Oops - This is wrong. Because we missed to follow the How to Use? CSOM - PowerShell way of doing - Check the below Code:
#To add item to List
$ListItemInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation
$Item = $List.AddItem($ListItemInfo)
$Item["Title"] = "Ms"
$Item.Update()
$Context.ExecuteQuery()

Summary

How can I find the Class Names?
Simply do the below and you will come to know the Class name
$list.AddItem
Returns
OverloadDefinitions
-------------------
Microsoft.SharePoint.Client.ListItem AddItem(Microsoft.SharePoint.Client.ListItemCreationInformation parameters)

Example Codes

Export User Profile

Delete List

Create List

Create Web

Absolute URL

Manipulating Web Settings

CodePlex Links