【SharePoint Online】リストやライブラリの情報を一括で取得する【PowerShell】

今回はリストライブラリの列情報を一括で取得するPowerShellを作成したのでご紹介したいと思います。
カスタム列に関しては後述しますが、変則的に書き換える必要がありますのでご注意ください。

それでは行きましょう。

ソース

まずはソースを確認ください。

解説

変数セクションは自身の環境に合わせて変更してご利用ください。
読み込ませるCSVに関しては以下を参考に作成しておきましょう。

URLListNameisList
https://[your tenant].sharepoint.com/sites
/[your site]
取得したいリスト or ライブラリtrue
https://[your tenant].sharepoint.com/sites
/[your site]
取得したいリスト or ライブラリfalse

参照列の取得

スクリプト内の50行目を確認してください。

$outputData = New-Object PSObject | Select-Object SiteName, LibralyName, Author, Name, Location, Tag, TemporaryTag, ModifiedDate, ModifiedBy

ここでは、PSObjectとして各Objectのタイトルを生成しています。
Tag,TemporaryTagはカスタム列になります。
Tag列は参照列であり、参照列を取得する場合は以下のように記述する必要がありました。
複数選択されている場合にも対応できます。

 if($Item.FieldValues.Tag.Values.Values.Count -ne 0){
            $tags = for($i=0; $i -lt $Item.FieldValues.Tag.Values.Values.Count+1; $i += 4){$Item.FieldValues.Tag.Values.Values[$i+1]}
            $tagList = ""
            for($i=0; $i -ne $tags.Count; $i++)
            {
                if($i -eq 0){
                    $tagList += $tags[$i]
                }elseif($i -eq $tags.count -1){
                    $tagList += $tags[$i]
                }else{
                    $tagList += ";"+$tags[$i]
                }
            }
            $outputData.Tag = $tagList
        }

その他の列は大体が$Item.FieldValues配下を参照することで取得できます。
色々見てみると面白いです。

終わりに

今回はサクッと以上となります。
複数サイトから共通ライブラリの情報を取得する際などに便利なスクリプトかなと思いますので、
是非ご活用ください。

それではまた。