kooh-q-hook

いわゆる一つの技術メモ

SharePoint REST APIとPowerShell

SharePointREST API は Accept ヘッダーに
"application/json;odata=verbose" を指定することで、
JSON 形式で結果を取得することができます(既定では Atom形式)。

取得はできるのですが、返却される プロパティに "ID" が含まれる場合、
奇妙なことに、そのJSON表現 には "id" と "Id" が出現します。

これは SharePoint 以外のWindows サーバーから、
SharePoint REST API を利用する時には注意が必要な点です。

PowerShell 3.0から導入された Invoke-RestMethod コマンドレットでは、
JSON内に同一のキーが含まれる場合、キー重複でエラーとなってしまうからです。
(ConvertFrom-Json コマンドレットも、このようなJSONをパースできません)

Atom形式で取得するか、
Invoke-RestMethod / ConvertFrom-Json を使用せずに何とかするか。

Invoke-WebRequest コマンドレット と
JavaScriptSerializer.DeserializeObject を併用するのが簡単でお勧めです。