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
Directive du modèle objet client
Tâches courantes de programmation