答えて

0

警告として、私は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ループの外で、フォルダがどのように多くのアイテムを持っているものの数を維持するために、辞書または別のデータ構造を使用することができます。

0

フォルダ内のファイル数が、ここで、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() 
関連する問題