8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PnP.PowerShellについて & SharePoint内のドキュメントファイルをリスト化

Posted at

PnP.PowerShellとは

SharePointを管理するためのPowerShellモジュールです。
SharePoint OnlineおよびSharePoint Serverの様々な管理タスクを自動化できます。

インストール方法

基本的にはPowerShellを管理者として実行して、下記のコマンドでモジュールをインストールします。

Install-Module -Name PnP.PowerShell

インストールに関しての詳細は下記ページに書かれています。

基本的なコマンド

SharePointへの接続

SharePointの管理タスクを実行するために、まずSharePointのサイトに接続する必要があります。
接続するためには、Connect-PnPOnlineというコマンドを使用します。
私の環境では、多要素認証を使用しているので、-UseWebLoginというオプションも付けます。

Connect-PnPOnline -Url "<サイトURL>" -UseWebLogin

その他情報は下記ページを参照して下さい。

ページの作成

ページの作成はAdd-PnPPageを使用します。

Add-PnPPage -Name "<ページ名>" -Title "<ページタイトル>" -PageLayoutType "<ページレイアウト>" [-PromoteAsNewsArticle] [-HeaderType "<ヘッダータイプ>"] [-HeaderLayoutType "<ヘッダーレイアウトタイプ>"]

リストの作成

SharePointサイト内でのリストの作成はNew-PnPListを使用します。
リストテンプレートには、汎用リストであればGenericList、アナウンスリストであれば```Announcements``を指定して下さい。

New-PnPList -Title "<リストタイトル>" -Template "<リストテンプレート>"

本題

SharePoint内のドキュメントファイルをリスト化したい

今回はPowerShellのスクリプトを作成して、リスト化していきます。
リストの出力先はCSVファイルにしました。

実装について

実装はWindows PowerShell ISEを使用して行いました。
ISEの詳細については以下を参照して下さい。

CSVのリストの列は、ファイル名、ファイルかフォルダかの種類、ファイルの種類、URL、作成者のmail、作成日、最後に編集した日、最後に編集した人のmailを設定しました。

実装本体

# サイトURL定義
$SiteURL= "<サイトURL>"
#ドキュメントのフォルダを指定
$ListName="Shared Documents"
# 出力先定義
$ReportOutput = "C:\Users\user\SharePointList.csv"
# リスト取得最大ファイル数の定義
$Pagesize = 500

#SharePointサイトに接続
Connect-PnPOnline -Url $SiteURL -UseWebLogin

#CSV作成前に既存ファイル削除
If (Test-Path $ReportOutput) { Remove-Item $ReportOutput}
   
#ドキュメント情報の取得
$List  = Get-PnPList -Identity $ListName
$global:counter = 0;

#プロパティを指定して情報取得
$ListItems = Get-PnPListItem -List $ListName -PageSize $Pagesize -Fields Author, Editor, Created, File_x0020_Type -ScriptBlock `
        { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete ($global:Counter / ($List.ItemCount) * 100) -Activity `
             "Getting Documents from Library '$($List.Title)'" -Status "Getting Documents data $global:Counter of $($List.ItemCount)";} | Where {$_.FileSystemObjectType -eq "File"}
  
$ItemCounter = 0

#結果を入れる空の配列用意
$Results = @()

#取得した要素を整理
Foreach ($Item in $ListItems)
{
#プロパティをCSVの任意の列に当てはめる
        $Results += New-Object PSObject -Property ([ordered]@{
            #ファイル名
            Name              = $Item["FileLeafRef"]
            #ファイルかフォルダか
            Type              = $Item.FileSystemObjectType
            #ファイルの種類
            FileType          = $Item["File_x0020_Type"]
            #URL
            RelativeURL       = $Item["FileRef"]
            #作成者のmail
            CreatedByMail    = $Item["Author"].Email
            #作成日
            CreatedOn         = $Item["Created"]
            #最後に編集した日
            Modified          = $Item["Modified"]
            #最後に編集した人のmail
            ModifiedByMail   = $Item["Editor"].Email
        })
    $ItemCounter++
    Write-Progress -PercentComplete ($ItemCounter / ($List.ItemCount) * 100) -Activity "Exporting data from Documents $ItemCounter of $($List.ItemCount)" -Status "Exporting Data from Document '$($Item['FileLeafRef'])"        
}
  
#CSVに出力
$Results | Export-Csv -Path $ReportOutput -NoTypeInformation
   
Write-host "出力完了"

#SharePointサイト切断
Disconnect-PnPOnline

説明については上記コメントアウトを参照下さい。
参考にしたサイトは以下です。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?