Comment puis-je récupérer tous les éléments d'une liste Sharepoint à l'aide otite chronique si je peux récupérer uniquement les N éléments de temps?
Je suis en train d'écrire un script Powershell pour récupérer tous les éléments d'une liste. J'ai été informé par mes supérieurs que je suis limité à tirer de 200 lignes à la fois, donc j'ai écrit le code suivant dans cet esprit:
function getLookupValues($_ctx, $_listName, $_colToMatch)
{
$lookupList = $_ctx.Web.Lists.GetByTitle($_listName)
$query = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(200, 'ID', $_colToMatch)
$vals = $lookupList.getItems($query)
$_ctx.Load($lookupList)
$_ctx.Load($vals)
$_ctx.ExecuteQuery()
return $vals
}
La liste, je suis en essais a plus de 200 objets. Lorsque j'exécute ce code, je ne récupérer que les 200 premiers éléments. Je suppose que c'est comme prévu, mais j'ai trouvé depuis que la requête est appelé "Tous les Éléments" de la requête, il peut savoir à plusieurs reprises requête de 200 articles jusqu'à ce qu'il atteigne la fin de la liste. Cependant, comme je l'ai découvert par le biais de tests, qui n'est pas le cas.
Quelle est la bonne façon de récupérer chaque élément dans une liste si je me suis donné une limite de N lignes par requête? Ai-je besoin pour effectuer une sorte de boucle qui à plusieurs reprises, les requêtes et les décharges, les résultats en une holding de tableau jusqu'à ce que tous les éléments ont été récupérés?
Vous devez vous connecter pour publier un commentaire.
Madhur la réponse a été la plupart du temps correct, mais j'ai besoin de quelque chose qui fonctionne avec Sharepoint Client de la bibliothèque. Voici comment j'ai modifié le code pour obtenir le résultat souhaité:
Techniquement, il n'existe pas de vous arrêter à partir de la récupération de toutes les lignes d'un seul coup. Si vous le voyez, le
CreateAllItemsQuery
de la documentation, il y a une surcharge qui vous donnera toutes les ligneshttp://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client.camlquery.createallitemsquery%28v=office.15%29.aspx
Si vous êtes donné une limite de N lignes par requête, vous devrez le récupérer via la boucle.
Un coup d'oeil à cet article :
http://blogs.msdn.com/b/kaevans/archive/2012/02/13/iterating-large-sharepoint-lists-with-powershell.aspx
Je suis répliquer le code ici: