PowerShell で SharePoint CSOM を使用する際の Tips

こんにちは、SharePoint サポートの秋山 雅裕 (makiyama) です。   今回の投稿では、SharePoint Server / SharePoint Online に対して、クライアント サイド オブジェクト モデル (以下、CSOM) をリモートで実行する PowerShell スクリプトを記述する際の Tips をご紹介します。   CSOM を使用することで、SharePoint にログインすることなくサイト コレクション配下のオブジェクトを操作するバッチなどを実装することが可能です。 また、PowerShell を使用することで、Visual Studio などをインストールすることなくスクリプトが実行できます。   <目次> 事前準備 ツール 基本的な CSOM の実装 ラムダ式の利用 ファイル出力   事前準備 対象となる SharePoint によって利用可能な API が異なるため、適切な CSOM のアセンブリを取得します。 SharePoint の更新に合わせて CSOM のアセンブリも更新されるため、定期的に最新版を確認、取得いただくことをお勧めします。   SharePoint Online…


PowerShell サンプル : SharePoint Online HTTP 調整 (応答コード : 429) 対策の増分バックオフ リトライ

こんにちは SharePoint サポートの森 健吾 (kenmori) です。 SharePoint Online に対して CSOM などのクライアント サイド API を大量に呼び出した際、一定期間内における HTTP の要求数やデータ センター側の CPU リソース使用量によっては、一時的なブロックが発生します。   2019.3.13 追記 本投稿にて記載したベスト プラクティスはすでに変更されております。以下のページをご確認ください。 [再改訂版] SharePoint Online HTTP 調整 (応答コード : 429) 対策の増分バックオフ リトライ 詳細については、以下のページに記載されています。 タイトル : SharePoint Online で調整またはブロックを回避する方法 アドレス : https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online この問題が発生することを前提とした有効な対処策として、上記ページではC# を使用した調整を回避するための期間をあけて再実行するための増分バックオフ リトライ コードが紹介されております。 この投稿では、運用シナリオにおいても頻繁に使用される PowerShell 版のサンプルを紹介しますので、ご参考にしてください。 以下のコードでは、$script:context.ExecuteQuery() を自作関数 ExecuteQueryWithIncrementalRetry に置き換えます。   $siteUrl =…


SharePoint Online からサイト・リストの権限の一覧を取得するサンプル

こんにちは SharePoint サポートの森 健吾 (kenmori) です。 今回の投稿では、SharePoint Online のサイトから、配下の権限オブジェクトを取得するサンプルを記載します。 権限一覧の取得は、様々な移行シナリオなどで必要になることが多いため、最もサンプルが要望されるものの一つです。 今回は SharePoint Online 用に CSOM で権限一覧を取得しました。ただし、フォルダーやアイテム単位での権限などを考慮すると、処理時間やリスト ビューのしきい値など様々な問題を考慮する必要があるので、今回のサンプルではリストまでを取得する形となっております。必要に応じて、ここから拡張するなど、開発工数削減のため活用ください。 権限一覧取得プログラムは C# と PowerShell で記載しております。ただし、PowerShell では、下記公開資料に記載されているような抑制されたプロパティの取得 (例. HasUniqueRoleAssignments プロパティ) のロードが困難です。そのため、下記サンプルの動作上の差異として、PowerShell では固有の権限が割り当てられているか否かにかかわらず、すべてのリストの権限を無条件で取得するようにさせていただだきました。 このように、CSOM 開発では、稀に言語要件を決定する際に PowerShell が選択しにくい場合がありますので、ご注意ください。 タイトル : クライアント オブジェクトの取得によって全プロパティが取得されるわけではない アドレス : https://msdn.microsoft.com/ja-jp/library/office/ee534974(v=office.14).aspx ここから先のサンプルを使用するにあたり、必ず SharePoint Online Client Components SDK をインストールしてください。 タイトル : SharePoint Online Client Components SDK アドレス : http://www.microsoft.com/en-us/download/details.aspx?id=42038 …


SharePoint Online に対して PowerShell を使用する方法

こんにちは、SharePoint サポートの森 健吾 (kenmori) です。今回の投稿では、SharePoint Online を使用するにあたり PowerShell を使用するまでの準備と実践方法について下記にまとめさせていただきます。SharePoint Online に対し PowerShell コマンドレットを使用する方法は、いくつかの方法があります。下記に概要を記載します。 概要 事前準備 Windows PowerShell 3.0 について 方法 1. SharePoint Online 管理シェルを使用する 2. SharePoint Online SDK を使用する SharePoint Online テナントに対してグローバル管理者の権限を所有し、用意された管理タスクを実行する場合、方法 1. を使用するのが工数も少なく効率的です。 ただし、管理運用上でのニーズを満たすためには、現実的にほとんどの場合方法 2. を使用せざるを得ないものと思われます。方法 2. はサイトコレクション管理者や一般ユーザーでも使用可能な方法です。 SharePoint On-Premises で使用する SharePoint 管理シェルと大きく異なる点は、これらのコマンドはサーバーにリモート接続して処理を呼び出す形式のクライアント サイドで実行されるスクリプトであるという点です。 タイトル : SharePoint Online 管理シェルの概要 アドレス : http://technet.microsoft.com/ja-jp/library/fp161388(v=office.15).aspx 事前準備 : Windows…


クライアント オブジェクト モデルを使用したプログラミング 第 3 回 : Silverlight アプリケーションの作成

こんにちは。SharePoint サポートチームの多田です。 第 3 回では、.NET マネージ API を使用して、Silverlight アプリケーションを作成する手順と tips をご紹介します。   – 環境 ・SharePoint Server 2010 ・Visual Studio 2010   – 参照する DLL ファイル Silverlight アプリケーションを作成する際に使用する DLL ファイルは以下の 2 つのファイルです。   %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\ClientBin\Microsoft.SharePoint.Client.Silverlight.dll %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\ClientBin\Microsoft.SharePoint.Client.Silverlight.Runtime.dll   – フォーム アプリと Silverlight アプリの違いは? フォーム アプリケーションと Silverlight アプリケーションの違いは基本的には 1 つだけです。 Silverlight…


クライアント オブジェクト モデルを使用したプログラミング 第 2 回 : フォームアプリケーションの作成

こんにちは。SharePoint サポートの多田です。 第 2 回では、.NET マネージ API を使用して、フォームアプリケーションを作成する際の手順および tips をご紹介します。   – 環境 ・SharePoint Server 2010 ・Visual Studio 2010   – 参照する DLL ファイル Visual Studio にてアプリケーションの作成を始める前に、クライアント オブジェクト モデルを使用するために参照すべき、DLL ファイルを紹介します。 以下のファイルは SharePoint サーバーの以下のディレクトリに保存されています。   – フォームアプリケーション %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI\Microsoft.SharePoint.Client.dll %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI\Microsoft.SharePoint.Client.Runtime.dll   また、クライアント オブジェクト モデルを含むアプリケーションをクライアント側で動作させるためにも上記の DLL ファイルが必要になります。上記の DLL ファイルは以下の URL…


クライアント オブジェクト モデルを使用したプログラミング 第 1 回 : クライアント オブジェクト モデルの概要

こんにちは。SharePoint サポートの多田です。 これから SharePoint 2010 から新しく追加されたコンポーネントであるクライアント オブジェクト モデルを使用したプログラミングについてシリーズでお伝えしていきます。 第 1 回である今回は、クライアント オブジェクト モデルの概要についてご案内します。     – オブジェクト モデルとクライアント オブジェクト モデルの違い まずは前提条件として、クライアント オブジェクト モデルを説明する前に、オブジェクト モデルとクライアント オブジェクト モデルの違いについて説明します。 オブジェクト モデルは、SharePoint サーバー上で動作する SharePoint アプリケーションを作成するために提供されるクラス ライブラリです。サーバー オブジェクト モデルとも呼ばれます。主に、リストやライブラリに対するイベントレシーバー、Web パーツ、ワークフローなどの開発に使用します。 一方、クライアント オブジェクト モデルは、クライアント側で動作する SharePoint アプリケーションを作成するために提供されるクラス ライブラリです。主に、JavaScript、Silverlight、フォームアプリケーション上で SharePoint のデータを扱えるようになります。また、クライアント オブジェクト モデルは、クライアント側から SharePoint のデータにアクセスするため、サーバー オブジェクト モデルと比べて使える機能は限定されています。     – クライアント オブジェクト モデルの通信の仕組み…