Client Side Object Model (CSOM) を使った SharePoint の操作

これは、PowerShell Advent Calendar 2014 18日目の記事です。

SharePoint でリストなどの情報を、PowerShell から利用するためには、Client Side Object Model (CSOM) を利用する必要があり、以下の二つをインストールする必要があります。

Windows Management Framework 3.0
http://www.microsoft.com/en-us/download/details.aspx?id=34595

SharePoint Server 2013 Client Components SDK
http://www.microsoft.com/en-us/download/details.aspx?id=35585

CSOM を使って、

● 接続
● サイトのタイトルとURLの取得
● SiteCheckリストのタイトル取得

までは、以下のようになります。


# Client Side Object Model の読み込み
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" 
Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" 

$WebUrl = 'https://テナント名.sharepoint.com/'
$loginUser = "hoge@テナント名.onmicrosoft.com "
$Password = "パスワード" 

$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force 

# コンテキストを作成
$Context =New-Object Microsoft.SharePoint.Client.ClientContext($WebUrl)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($loginUser, $securePassword) 
$Context.Credentials = $credentials 

if (!$Context.ServerObjectIsNull.Value) 
{ 
    Write-Host $WebUrl " に接続完了" -ForegroundColor Green 
} 

$web = $Context.Web
$Context.Load($web)
$Context.ExecuteQuery()

Write-Host $web.title
Write-Host $web.Url

# SiteCheck というリストの内容を抽出
$listName = "SiteCheck"

$list = $web.Lists.GetByTitle($listName) 
$Context.Load($list)
$Context.ExecuteQuery()

Write-Host $list.Title
Write-Host $list.Description

$query = New-Object Microsoft.SharePoint.Client.CamlQuery
$query.ViewXml = ""

$listItems = $list.getItems($query)
$Context.Load($listItems)
$Context.ExecuteQuery()
$query.ListItemCollectionPosition = $listItems.ListItemCollectionPosition

foreach($item in $listItems)
{
        Write-Host  $item["Title"]
}

カテゴリー: Office 365, PowerShell, SharePoint Server パーマリンク

コメントを残す