1

Я пытаюсь выполнить итерацию библиотеки документов и установить каждый документ/элементы, наследующие разрешения (на данный момент каждый документ/элемент использует уникальные разрешения).SharePoint Online Iterating через библиотеки документов CSOM

Я могу получить конкретную библиотеку документов, однако я не могу выполнять итерацию, если каждый из элементов/документов внутри нее. Это то, что я до сих пор:

Add-Type -Path "Libraries\Microsoft.SharePoint.Client.dll" 
Add-Type -Path "Libraries\Microsoft.SharePoint.Client.Runtime.dll" 
Add-Type -Path "Libraries\Microsoft.SharePoint.Linq.dll" 
Add-Type -Path "Libraries\Microsoft.SharePoint.dll" 

$webUrl = "https://test.sharepoint.com/sites/testsite" 
$username = "####" 
$password = "####" 
$securePass = ConvertTo-SecureString $password -AsPlainText -Force 
$listname = "TestDoc"; 

$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl) 
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePass) 

#variables 
$web = $ctx.Web 
$lists = $web.Lists 
$ctx.Load($lists) 
$ctx.Load($web) 
$ctx.ExecuteQuery() 

#print web URL 
write-host `n "Web Url:" `n $web.Url 

foreach ($list in $lists) 
{ 

    if ($list.Title -eq "TestDoc") 
    { 
     #print list name if found 
     write-host `n "Found the list:" `n $list.Title `n 


      #attempting to iterate through items in the document library 
      foreach ($item2 in $list.Items) 
      { 
       #list the items/documents in the document library 
       write-host $item2.Title 
      } 


    } 
} 

Это цикл Еогеасп У меня возникли проблемы в данный момент, как я не знаю, как петля, хотя каждая из статей/документов в библиотеке документов.

Любые предложения относительно подхода, который я должен принять, будут высоко оценены.

ответ

0

Ошибки я получаю:

Не удается найти перегрузку «Load» и количество аргументов: «1». В C: \ Users \ setup \ Desktop \ Test-BreakInheritence-Script-SPOnline \ Permissions-Inh eritence.ps1: 38 char: 3 + $ ctx.Load ($ items) + ~~~~~~~~~~~ ~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodException + FullyQualifiedErrorId:

Был связан с методом Load(), требующим добавления дополнительных параметров. Я думаю, что это необходимо только при работе со списками/listItems. Не тратьте слишком много времени, исследуя точную причину, но я переделывал мое решение и сделал проще:

Add-Type -Path "Libraries\Microsoft.SharePoint.Client.dll" 
Add-Type -Path "Libraries\Microsoft.SharePoint.Client.Runtime.dll" 
Add-Type -Path "Libraries\Microsoft.SharePoint.Linq.dll" 
Add-Type -Path "Libraries\Microsoft.SharePoint.dll" 

    $webUrl = "https://test.sharepoint.com/sites/testsite" 
    $username = "####" 
    $password = "####" 
    $securePass = ConvertTo-SecureString $password -AsPlainText -Force 
    $listname = "TestDoc" 

    $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl) 
    $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePass) 


    #get the List/DocLib and load it for use 
    $listUpdate = $ctx.Web.Lists.GetByTitle($listname) 
    $ctx.Load($listUpdate) 
    $ctx.ExecuteQuery() 

    #CAML Query to get all items inclusing sub-folders 
    $spQuery = New-Object Microsoft.SharePoint.Client.CamlQuery 
    $spQuery.ViewXml = "<View Scope='RecursiveAll' />"; 
    $itemki = $listUpdate.GetItems($spQuery) 
    $ctx.Load($itemki) 
    $ctx.ExecuteQuery() 

    #iterating through the items and reseting permission inheritence 
    for($j=0; $j -lt $itemki.Count; $j++) 
    { 
     $itemki[$j].ResetRoleInheritance() 
     $ctx.ExecuteQuery() 
    } 

Это работает как шарм в настоящее время.

+0

Спасибо. Это помогло мне создать сценарий, который изменяет названия документов в библиотеке документов SPO. –