SharepointリストをPowershellで更新する

SharepointのカスタムリストをPowershellでUpdateする方法

Sharepoint操作に必要な準備をする

以前ドキュメントライブラリの操作で使用したクライアント サイド オブジェクト モデル (以下、CSOM) のリモート実行モジュールを使います。

ドキュメントライブラリについての操作は下記をご覧ください

[nlink url=”https://f-journey.com/it/manage_sharepoint_doclib_by_powershell/” title=”Sharepointのドキュメントライブラリ作業を自動化する【Powershell】” excerpt=”SharepointのドキュメントライブラリをPowershellで操作する方法の紹介です” img=”http://f-journey.com/blog/wp-content/uploads/2019/08/Microsoft-SharePoint-2013-icon.png”]

CSOMの入手

使用しているSharepointサーバに応じたCSOMモジュールを入手します。

SharePoint Online

Nuget 版
タイトル : Microsoft.SharePointOnline.CSOM
URL : https://www.nuget.org/packages/Microsoft.SharePointOnline.CSOM/

Microsoft Download 版
タイトル : SharePoint Online Client Components SDK
URL : https://www.microsoft.com/en-us/download/details.aspx?id=42038

SharePoint Server 2016

タイトル : SharePoint Server 2016 Client Components SDK
URL : https://www.microsoft.com/en-us/download/details.aspx?id=51679

SharePoint Server 2013

タイトル : SharePoint Server 2013 Client Components SDK
URL : https://www.microsoft.com/en-us/download/details.aspx?id=35585

SharePoint Server 2010

タイトル : SharePoint Foundation 2010 Client Object Model Redistributable
URL : http://www.microsoft.com/download/en/details.aspx?id=21786

リスト操作の準備

CSOMモジュールの読み込み

まずは、CSOMモジュールを読み込みます。結果が返ってくるので|Out-Nullで非表示にしてますが、表示しても一向に構いません。

サイトコレクションの読み込み

まずURLを指定します。OnlineにしろOn-Premiseにしろ、下記のいずれかで指定できると思います。

認証情報の作成

Sharepoint Onlineの場合は認証情報を作成する必要があります。

On-Premiseのサーバの場合には、統合認証が使えるので下記でもいけるはず。

Contextの作成

Contextを作って、認証情報を付与します。

リストの名前を指定してリストを読み込む

サンプルでは”ListName”としていますが、2バイトコード指定ができるので日本語でもOKです。

リストの情報を表示してみましょう。

リストのアイテムを読み込む

CamlQueryを準備してアイテムを読み込みます。xmlが無指定で良ければ全件読み込みます。

これで$ListItemsにリストアイテムの配列が格納されます。
何件確認されているか見てみましょう。

これで更新対象のリストが準備できました。

リストのアイテムに対して更新をする

$ListItemsはリストアイテムの配列なので、個々のアイテムを取り出して操作をする必要があります。
$ListItems.getById(1)で取り出せるはずなんですが、筆者の環境ではうまく行かなかったので(T_T)、
foreach文を使うことにします。
まずは試しに内容を表示させてみましょう。

ユーザー毎の名前(User)、Mail、個人別サイト(URL)が格納されたリストを想定します。
$item[“Title”]はitemメソッドを使って、$item.item(‘Title’)と表記することも出来ます。

テキスト項目を更新する

テキストの項目であれば、代入するだけで更新できます。

このUpdateメソッドは手元のオブジェクトを更新するだけなので、サーバに反映するには$Context.ExecuteQuery()メソッドを実行する必要があります。複数行をまとめてExecuteQueryするとコケることがあるので、1アイテムごとにやった方が良さそうです。

選択式の項目もテキスト項目と同じ要領で更新できます。

URL項目を更新する

[ハイパーリンクまたは画像]列はFieldUrlValue型に格納されています。新しいオブジェクト作って、プロパティを設定、FieldUrlValue型にCastしてから格納してすると更新できます。

ユーザー項目を更新する

[ユーザーまたはグループ]列はFieldUserValue型に格納されています。Idで管理されていますが、URLと同じ様にFieldUserValue型にCastしてから格納します。

更新&片付け

一通り更新が終わったらExecuteQueryしてDisposeしてオブジェクトを開放しましょう。

サンプルソース

SharepointリストをPowershellで更新する” に対して3件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください