Búsqueda de sitios web

SharePoint Online: consulta CAML para campo de persona o grupo en PowerShell


Requisito: campo Consulta CAML de SharePoint Online para persona o grupo

SharePoint Online: consulta CAML para filtrar campos de persona o grupo en PowerShell

En SharePoint Online, el campo Persona o Grupo permite a los usuarios seleccionar una o más personas o grupos de un sitio de SharePoint. CAML (Lenguaje de marcado de aplicaciones colaborativas) es un lenguaje de consulta basado en XML que se utiliza en SharePoint para consultar datos de listas y bibliotecas. En este artículo, analizaremos cómo crear una consulta CAML para un campo Persona o Grupo en PowerShell.

Digamos que queremos filtrar y obtener todos los proyectos donde el valor del campo de usuario "Administrador de proyectos" es una persona en particular.


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
 
#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
$UserID="salaudeen@crescent.com"
 
#Get Credentials to connect
$Cred= Get-Credential
  
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
#Get the List and User Objects
$List = $Ctx.Web.lists.GetByTitle($ListName)
$User = $Ctx.web.EnsureUser($UserID)
$Ctx.Load($User)
$Ctx.ExecuteQuery()
$UserID = $User.Id

#Define the CAML Query
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml = "@
<View Scope='RecursiveAll'>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='ProjectManager' LookupId='TRUE'/><Value Type='User'>$UserID</Value>
            </Eq>
        </Where>
    </Query>
</View>"

#Get All List Items matching the query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()

Write-host "Total Number of Items:"$ListItems.count

#Loop through each List Item
ForEach($Item in $ListItems)
{ 
    Write-host $Item.id
    Write-host $Item["Title"]
}

Filtro de consultas CAML de SharePoint por nombre de usuario:

El script de PowerShell anterior filtra el campo de usuario utilizando la propiedad UserID. También puede filtrar el campo de usuario según el nombre para mostrar del usuario:


<View Scope='RecursiveAll'>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='ProjectManager'/><Value Type='Text'>Salaudeen Rajack</Value>
            </Eq>
        </Where>
    </Query>
</View>

Obtener elementos de la lista donde el campo Persona o Grupo es Usuario actual:
CAML de SharePoint para filtrar según el usuario actual


<View>
    <Query>
        <Where>
            <Eq>
                <FieldRef Name='ProjectManager'/><Value Type='Integer'><UserID /></Value>
            </Eq>
        </Where>
    </Query>
</View>

Consulta CAML de SharePoint para campo multiusuario
Obtengamos todos los elementos de la lista donde aparece un usuario en particular en la columna del selector de personas de valores múltiples "Miembros del proyecto".


<View Scope='RecursiveAll'>
    <Query>
        <Where>
            <Includes>
                <FieldRef Name='ProjectMembers' LookupId='TRUE'/><Value Type='User'>$UserID</Value>
            </Includes>
        </Where>
    </Query>
</View>" 

Siguiendo los scripts y los ejemplos proporcionados en este artículo, puede crear fácilmente una consulta CAML para un campo Persona o Grupo en PowerShell y consultar datos desde una lista de SharePoint. Aquí hay otra publicación para SharePoint local para filtrar campos de usuario mediante consultas CAML: Consulta CAML de SharePoint para filtrar por campo de usuario en PowerShell

Artículos relacionados