Partager via


Procédure : utiliser des utilisateurs et des groupes

Dernière modification : vendredi 29 avril 2011

S’applique à : SharePoint Foundation 2010

Dans cet article
Récupération de tous les utilisateurs d’un groupe SharePoint
Récupération de propriétés spécifiques d’utilisateurs
Récupération de tous les utilisateurs dans l’ensemble des groupes d’une collection de sites
Ajout d’un utilisateur à un groupe SharePoint

Disponible dans SharePoint Online

La même logique de récupération de données utilisée pour les sites Web, les listes et les éléments de liste dans l’espace de noms Microsoft.SharePoint.Client (JavaScript: SP) s’applique aux utilisateurs et aux groupes. Comme pour les autres objets de cet espace de noms, vous pouvez utiliser un objet CreationInformation pour créer un objet utilisateur ou groupe.

Récupération de tous les utilisateurs d’un groupe SharePoint

La propriété SiteGroups (JavaScript: siteGroups) de la classe Web (JavaScript: Web) obtient tous les groupes dans l’ensemble des sites Web d’une collection de sites. Comme illustré dans l’exemple suivant, vous pouvez utiliser la méthode GetById(Int32) (JavaScript: getById(id)) pour retourner un groupe spécifique de la collection de groupes. La propriété Users (JavaScript: users) de la classe Group class (JavaScript: Group) obtient tous les utilisateurs du groupe. Comme l’exemple suivant charge les utilisateurs dans le groupe spécifié, toutes les propriétés de chaque objet utilisateur sont disponibles.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class RetrieveAllUsersInGroup
    {
        static void Main()
        {
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            GroupCollection collGroup = clientContext.Web.SiteGroups;
            Group oGroup = collGroup.GetById(7);
            UserCollection collUser = oGroup.Users;

            clientContext.Load(collUser);

            clientContext.ExecuteQuery();

            foreach (User oUser in collUser)
            {
                Console.WriteLine("User: {0}  ID: {1} Email: {2} Login Name: {3}", 
                    oUser.Title, oUser.Id, oUser.Email, oUser.LoginName);
            }
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class RetrieveAllUsersInGroup

        Shared Sub Main()
            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
            Dim oGroup As Group = collGroup.GetById(7)
            Dim collUser As UserCollection = oGroup.Users

            clientContext.Load(collUser)

            clientContext.ExecuteQuery()

            Dim oUser As User
            For Each oUser In collUser
                Console.WriteLine("User: {0}  ID: {1} Email: {2} Login Name: {3}", _
                                  oUser.Title, oUser.Id, oUser.Email, oUser.LoginName)
            Next oUser

        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';

function retrieveAllUsersInGroup() {

    var clientContext = new SP.ClientContext(siteUrl);
    var collGroup = clientContext.get_web().get_siteGroups();
    var oGroup = collGroup.getById(7);
    this.collUser = oGroup.get_users();
    clientContext.load(collUser);


    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    var userInfo = '';

    var userEnumerator = collUser.getEnumerator();
    while (userEnumerator.moveNext()) {
        var oUser = userEnumerator.get_current();
        this.userInfo += '\nUser: ' + oUser.get_title() + 
            '\nID: ' + oUser.get_id() + 
            '\nEmail: ' + oUser.get_email() + 
            '\nLogin Name: ' + oUser.get_loginName();
    }
      
    alert(userInfo);
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Récupération de propriétés spécifiques d’utilisateurs

L’exemple suivant modifie l’exemple précédent pour retourner uniquement le titre et l’adresse de messagerie de chaque utilisateur dans un groupe donné. L’exemple utilise la méthode Include<TSource>(IQueryable<TSource>, []) (instruction JavaScript: Include) pour spécifier que seules les propriétés Title (JavaScript: title) et Email (JavaScript: email) sont disponibles sur chaque objet utilisateur ; l’appel à d’autres propriétés retourne une exception PropertyOrFieldNotInitializedException.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class RetrieveSpecificUserProperties
    {
        static void Main()
        {
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            GroupCollection collGroup = clientContext.Web.SiteGroups;
            Group oGroup = collGroup.GetById(7);
            UserCollection collUser = oGroup.Users;

            clientContext.Load(collUser,
                users => users.Include(
                    user => user.Title,
                    user => user.LoginName,
                    user => user.Email));

            clientContext.ExecuteQuery();

            foreach (User oUser in collUser)
            {
                Console.WriteLine("User: {0} Login name: {1} Email: {2}", 
                    oUser.Title, oUser.LoginName, oUser.Email);
            }
        }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class RetrieveSpecificUserProperties

        Shared Sub Main()
            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
            Dim oGroup As Group = collGroup.GetById(7)
            Dim collUser As UserCollection = oGroup.Users

            clientContext.Load(collUser, Function(users) users.Include( _
                                             Function(user) user.Title, _
                                             Function(user) user.LoginName, _
                                             Function(user) user.Email))

            clientContext.ExecuteQuery()

            Dim oUser As User
            For Each oUser In collUser
                Console.WriteLine("User: {0} Login name: {1} Email: {2}", _
                                  oUser.Title, oUser.LoginName, oUser.Email)
            Next oUser

        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';

function retrieveSpecificUserProperties() {

    var clientContext = new SP.ClientContext(siteUrl);
    var collGroup = clientContext.get_web().get_siteGroups();
    var oGroup = collGroup.getById(7);
    this.collUser = oGroup.get_users();
    clientContext.load(collUser, 'Include(Title, LoginName, Email)');


    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    var userInfo = '';

    var userEnumerator = collUser.getEnumerator();
    while (userEnumerator.moveNext()) {
        var oUser = userEnumerator.get_current();
        this.userInfo += '\nUser: ' + oUser.get_title() + 
            '\nEmail: ' + oUser.get_email() + 
            '\vLogin Name: ' + oUser.get_loginName();
    }
        
    alert(userInfo);
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Récupération de tous les utilisateurs dans l’ensemble des groupes d’une collection de sites

Les exemples précédents montrent comment retourner tous les utilisateurs d’un groupe spécifié. Pour retourner tous les utilisateurs de l’ensemble des groupes au sein d’une collection de sites, vous pouvez utiliser la méthode Load<T>(T, []) (JavaScript: load(clientObject)) deux fois pour charger la collection de groupes et la collection des utilisateurs de chaque groupe, afin de rendre toutes les propriétés de chaque utilisateur et groupe disponibles. Utilisez la syntaxe de la méthode de requête LINQ pour inclure chaque collection d’utilisateurs de chaque groupe, comme dans l’exemple suivant.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class RetrieveAllUsersAllGroups
    {
        static void Main()
        {
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            GroupCollection collGroup = clientContext.Web.SiteGroups;

            clientContext.Load(collGroup);

            clientContext.Load(collGroup,
                groups => groups.Include(
                    group => group.Users));

            clientContext.ExecuteQuery();

            foreach (Group oGroup in collGroup)
            {
                UserCollection collUser = oGroup.Users;

                foreach (User oUser in collUser)
                {
                    Console.WriteLine("Group ID: {0} Group Title: {1} User: {2} Login Name: {3}", 
                        oGroup.Id, oGroup.Title, oUser.Title, oUser.LoginName);
                }
            }  
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class RetrieveAllUsersAllGroups

        Shared Sub Main()
            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim collGroup As GroupCollection = clientContext.Web.SiteGroups

            clientContext.Load(collGroup)

            clientContext.Load(collGroup, Function(groups) groups.Include( _
                                              Function(group) group.Users))

            clientContext.ExecuteQuery()

            Dim oGroup As Group
            For Each oGroup In collGroup
                Dim collUser As UserCollection = oGroup.Users

                Dim oUser As User
                For Each oUser In collUser
                    Console.WriteLine("Group ID: {0} Group Title: {1} User: {2} Login Name: {3}", _
                                      oGroup.Id, oGroup.Title, oUser.Title, oUser.LoginName)
                Next oUser
            Next oGroup

        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';

function retrieveAllUsersAllGroups() {

    var clientContext = new SP.ClientContext(siteUrl);
    this.collGroup = clientContext.get_web().get_siteGroups();
    clientContext.load(collGroup);
    clientContext.load(collGroup, 'Include(Users)');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    var userInfo = '';

    var groupEnumerator = collGroup.getEnumerator();
    while (groupEnumerator.moveNext()) {
        var oGroup = groupEnumerator.get_current();
        var collUser = oGroup.get_users();
        var userEnumerator = collUser.getEnumerator();
        while (userEnumerator.moveNext()) {
            var oUser = userEnumerator.get_current();
            this.userInfo += '\nGroup ID: ' + oGroup.get_id() + 
                '\nGroup Title: ' + oGroup.get_title() + 
                '\nUser: ' + oUser.get_title() + 
                '\nLogin Name: ' + oUser.get_loginName();
        }
    }
        
    alert(userInfo);
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Pour gagner en efficacité, vous pouvez appeler la méthode Load<T>(T, []) (JavaScript: load(clientObject)) une fois et modifier l’expression de la requête pour inclure uniquement les propriétés spécifiques, comme dans l’exemple suivant.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class RetrieveAllUsersAllGroupsSpecificProperties
    {
        static void Main()
        {
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            GroupCollection collGroup = clientContext.Web.SiteGroups;

            clientContext.Load(collGroup,
                groups => groups.Include(
                    group => group.Title,
                    group => group.Id,
                    group => group.Users.Include(
                        user => user.Title,
                        user => user.LoginName)));

            clientContext.ExecuteQuery();

            foreach (Group oGroup in collGroup)
            {
                UserCollection collUser = oGroup.Users;

                foreach (User oUser in oGroup.Users)
                {
                    Console.WriteLine("Group: {0} Group ID: {1} User: {2} Login Name: {3}", 
                        oGroup.Title, oGroup.Id, oUser.Title, oUser.LoginName);
                }
            }
         }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class RetrieveAllUsersAllGroupsSpecificProperties

        Shared Sub Main()
            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim collGroup As GroupCollection = clientContext.Web.SiteGroups

            clientContext.Load(collGroup, Function(groups) groups.Include( _
                                         Function(group) group.Title, _
                                         Function(group) group.Id, _
                                         Function(group) group.Users.Include( _
                                             Function(user) user.Title, _
                                             Function(user) user.LoginName)))

            clientContext.ExecuteQuery()

            Dim oGroup As Group
            For Each oGroup In collGroup
                Dim collUser As UserCollection = oGroup.Users

                Dim oUser As User
                For Each oUser In oGroup.Users
                    Console.WriteLine("Group: {0} Group ID: {1} User: {2} Login Name: {3}", _
                                      oGroup.Title, oGroup.Id, oUser.Title, oUser.LoginName)
                Next oUser
            Next oGroup

        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';

function retrieveAllUsersAllGroupsSpecificProperties() {

    var clientContext = new SP.ClientContext(siteUrl);
    this.collGroup = clientContext.get_web().get_siteGroups();
    clientContext.load(collGroup, 'Include(Title,Id,Users.Include(Title,LoginName))');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    var userInfo = '';

    var groupEnumerator = collGroup.getEnumerator();
    while (groupEnumerator.moveNext()) {
        var oGroup = groupEnumerator.get_current();
        var collUser = oGroup.get_users();
        var userEnumerator = collUser.getEnumerator();
        while (userEnumerator.moveNext()) {
            var oUser = userEnumerator.get_current();
            this.userInfo += '\nGroup ID: ' + oGroup.get_id() + 
                '\nGroup Title: ' + oGroup.get_title() + 
                '\nUser: ' + oUser.get_title() + 
                '\nLogin Name: ' + oUser.get_loginName();
        }
    }
        
    alert(userInfo);
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Ajout d’un utilisateur à un groupe SharePoint

Si l’objet utilisateur que vous voulez ajouter au groupe existe déjà dans la collection de sites, vous pouvez utiliser la méthode AddUser(User) (JavaScript: addUser(user)) pour ajouter l’utilisateur à la collection d’utilisateurs du groupe. Mais si l’utilisateur n’existe pas encore, comme dans l’exemple de code suivant, utilisez la classe UserCreationInformation (JavaScript: UserCreationInformation) pour définir un nouvel utilisateur, puis ajoutez celui-ci à la collection d’utilisateurs du groupe via la méthode Add(UserCreationInformation) (JavaScript: add(parameters)). Cet exemple utilise la méthode GetById(Int32) (JavaScript: getById(id)) pour retourner un groupe spécifique de la collection de groupes au sein de la collection de sites, puis définit un nouvel objet utilisateur et l’ajoute à la collection d’utilisateurs du groupe.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class AddUserToSharePointGroup
    {
        static void Main()
        {   
            ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection ");
            GroupCollection collGroup = clientContext.Web.SiteGroups;
            Group oGroup = collGroup.GetById(6);

            UserCreationInformation userCreationInfo = new UserCreationInformation();
            userCreationInfo.Email = "alias@somewhere.com";
            userCreationInfo.LoginName = @"DOMAIN\alias";
            userCreationInfo.Title = "John";

            User oUser = oGroup.Users.Add(userCreationInfo);

            clientContext.ExecuteQuery(); 
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class AddUserToSharePointGroup

        Shared Sub Main()
            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
            Dim oGroup As Group = collGroup.GetById(7)

            Dim userCreationInfo As New UserCreationInformation()
            userCreationInfo.Email = "alias@somewhere.com"
            userCreationInfo.LoginName = "DOMAIN\alias"
            userCreationInfo.Title = "John"
            Dim oUser As User = oGroup.Users.Add(userCreationInfo)

            clientContext.ExecuteQuery()

        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';

function addUserToSharePointGroup() {

    var clientContext = new SP.ClientContext(siteUrl);
    var collGroup = clientContext.get_web().get_siteGroups();
    var oGroup = collGroup.getById(7);
    var userCreationInfo = new SP.UserCreationInformation();
    userCreationInfo.set_email('alias@somewhere.com');
    userCreationInfo.set_loginName('DOMAIN\alias');
    userCreationInfo.set_title('John');
    this.oUser = oGroup.get_users().add(userCreationInfo);
    
    clientContext.load(oUser);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));

}

function onQuerySucceeded() {
        
    alert(this.oUser.get_title() + " added.");
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Pour des informations et des exemples sur l’utilisation des objets clients dans le contexte du modèle objet Silverlight Microsoft SharePoint Foundation 2010, voir Utilisation du modèle objet Silverlight.

Voir aussi

Concepts

Procédure : utiliser des rôles

Procédure : annuler l’héritage des affectations de rôle

Autorisation, utilisateurs et groupes

Vue d'ensemble de la récupération des données

Création d’objet client

Directive du modèle objet client

Tâches courantes de programmation

Autres ressources

Bibliothèque de classes Client

Bibliothèque de classes ECMAScript