我有一個包含許多文件夾的文檔庫。 我想獲得此庫中每個文件夾中的項目的數量。SharePoint CSOM Powershell - 獲取庫中每個文件夾中的文件數
我想了解這是否可以使用CSOM Powershell來實現。
有什麼OOTB方式嗎?
我有一個包含許多文件夾的文檔庫。 我想獲得此庫中每個文件夾中的項目的數量。SharePoint CSOM Powershell - 獲取庫中每個文件夾中的文件數
我想了解這是否可以使用CSOM Powershell來實現。
有什麼OOTB方式嗎?
就像一個預警,我不知道CSOM Powershell與傳統的PowerShell有相同的cmdlet。讓我知道如果他們這樣做,我會擺脫這個職位。如果沒有,這應該工作:
假設一個結構,你有[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()