多くのフォルダを含むドキュメントライブラリがあります。 このライブラリの各フォルダ内のアイテムの数を取得したいとします。SharePoint CSOM Powershell - ライブラリの各フォルダのファイル数を取得
これがCSOM Powershellを使用して実現できるかどうかを知りたいと思います。
OOTBの方法はありますか?
多くのフォルダを含むドキュメントライブラリがあります。 このライブラリの各フォルダ内のアイテムの数を取得したいとします。SharePoint CSOM Powershell - ライブラリの各フォルダのファイル数を取得
これがCSOM Powershellを使用して実現できるかどうかを知りたいと思います。
OOTBの方法はありますか?
警告として、私はCSOM Powershellが従来のpowershellと同じコマンドレットを持っているかどうかはわかりません。もし彼らがそうしたら、私はこの投稿を取り除くでしょう。そうでない場合は、これはうまくいくはずです:
[library]
には、[folders]
が含まれており、カウントしたいすべてのファイルが含まれていると仮定します。
foreach($folder in (Get-ChildItem $[library])){
$filecount = 0
Get-ChildItem $folder -recurse |
%{$filecount += 1}
#do whatever you want with $filecount here.
}
あなたがforeach
ループの外で、フォルダがどのように多くのアイテムを持っているものの数を維持するために、辞書または別のデータ構造を使用することができます。
フォルダ内のファイル数が、ここで、ItemChildCount
fieldを介して検索することができ、フォルダごとにファイル番号を取得する方法を示す例です:
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$ctx.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)
$list = $ctx.Web.Lists.GetByTitle("Documents")
$query = New-Object Microsoft.SharePoint.Client.CamlQuery
$query.ViewXml = "<View Scope='RecursiveAll'>
<ViewFields>
<FieldRef Name='FileRef' />
<FieldRef Name='ItemChildCount' />
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name='FSObjType' />
<Value Type='Integer'>1</Value>
</Eq>
</Where>
</Query>
</View>"
$items = $list.GetItems($query)
$ctx.Load($items)
$ctx.ExecuteQuery()
$items.GetEnumerator() | % {
Write-Host $_["FileRef"] , ":" , $_["ItemChildCount"]
}
$ctx.Dispose()