SharePoint Online: PowerShell'de Kişi veya Grup Alanı için CAML Sorgusu


Gereksinim: Kişi veya Grup için SharePoint Online CAML Sorgusu alanı

SharePoint Online: PowerShell'de Kişi veya Grup Alanını Filtrelemek için CAML Sorgusu

SharePoint Online'da Kişi veya Grup alanı, kullanıcıların bir SharePoint sitesinden bir veya daha fazla kişi veya grup seçmesine olanak tanır. CAML (İşbirlikçi Uygulama İşaretleme Dili), SharePoint'te listelerden ve kitaplıklardan veri sorgulamak için kullanılan XML tabanlı bir sorgu dilidir. Bu yazımızda PowerShell'de Kişi veya Grup alanı için CAML sorgusunun nasıl oluşturulacağını ele alacağız.

Diyelim ki “Proje Yöneticisi” kullanıcı alanı değerinin belirli bir kişi olduğu tüm projeleri filtrelemek ve almak istiyoruz.


#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"]
}

Kullanıcı Adına Göre SharePoint CAML Sorgu Filtresi:

Yukarıdaki PowerShell betiği, UserID özelliğini kullanarak kullanıcı alanını filtreler. Kullanıcı alanını kullanıcının görünen adına göre de filtreleyebilirsiniz:


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

Kişi veya Grup Alanının Geçerli Kullanıcı Olduğu Liste Öğelerini Alma:
Geçerli kullanıcıya göre filtrelemek için SharePoint CAML


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

Çok Kullanıcılı Alan için SharePoint CAML Sorgusu
Çok değerli kişi seçici sütunu "Proje Üyeleri" altında belirli bir kullanıcının listelendiği tüm liste öğelerini alalım.


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

Bu makalede verilen komut dosyalarını ve örnekleri izleyerek PowerShell'deki bir Kişi veya Grup alanı için kolayca CAML sorgusu oluşturabilir ve bir SharePoint listesinden verileri sorgulayabilirsiniz. CAML sorgularını kullanarak kullanıcı alanlarını filtrelemek için SharePoint Şirket İçi'ne yönelik başka bir gönderi: PowerShell'de Kullanıcı Alanına Göre Filtrelemek için SharePoint CAML Sorgusu

İlgili makaleler