Share via


Gewusst wie: Verwenden von Benutzern und Gruppen

Letzte Änderung: Freitag, 29. April 2011

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Abrufen aller Benutzer aus einer SharePoint-Gruppe
Abrufen bestimmter Eigenschaften von Benutzern
Abrufen aller Benutzer in allen Gruppen einer Websitesammlung
Hinzufügen eines Benutzers zu einer SharePoint-Gruppe

Verfügbar in SharePoint Online

Für Benutzer und Gruppen gilt die gleiche Datenabruflogik, die auch für Websites, Listen und Listenelemente im Microsoft.SharePoint.Client-Namespace (JavaScript: SP) gilt. Wie andere Objekte in diesem Namespace können Sie auch ein CreationInformation-Objekt verwenden, um ein Benutzer- oder Gruppenobjekt zu erstellen.

Abrufen aller Benutzer aus einer SharePoint-Gruppe

Die SiteGroups-Eigenschaft (JavaScript: siteGroups) der Web-Klasse (JavaScript: Web) ruft alle Gruppen in allen Websites innerhalb einer Websitesammlung ab. Wie im folgenden Beispiel gezeigt, können Sie die GetById(Int32)-Methode (JavaScript: getById(id)) verwenden, um eine bestimmte Gruppe aus der Gruppenauflistung abzurufen. Die Users-Eigenschaft (JavaScript: users) der Group-Klasse (JavaScript: Group) ruft alle Benutzer in der Gruppe ab. Da im folgenden Beispiel die Benutzer in der angegebenen Gruppe geladen werden, sind alle Eigenschaften jedes Benutzerobjekts verfügbar.

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());
}

Abrufen bestimmter Eigenschaften von Benutzern

Im folgenden Beispiel wird das vorherige Beispiel dahin gehend abgeändert, dass nur der Titel und die E-Mail-Adresse jedes Benutzers in einer bestimmten Gruppe zurückgegeben werden. In dem Beispiel wird mithilfe der Include<TSource>(IQueryable<TSource>, [])-Methode (JavaScript: Include-Anweisung) angegeben, dass nur die Title-Eigenschaft (JavaScript: title) und die Email-Eigenschaft (JavaScript: email) für jedes Benutzerobjekt verfügbar sind und dass beim Aufruf anderer Eigenschaften eine PropertyOrFieldNotInitializedException-Ausnahme zurückgegeben wird.

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());
}

Abrufen aller Benutzer in allen Gruppen einer Websitesammlung

In den vorherigen Beispielen wird gezeigt, wie alle Benutzer aus einer bestimmten Gruppe zurückgegeben werden. Sollen alle Benutzer aus allen Gruppen innerhalb einer Websitesammlung zurückgegeben werden, können Sie die Load<T>(T, [])-Methode (JavaScript: load(clientObject)) zweimal verwenden, um sowohl die Auflistung der Gruppen als auch die Auflistung der Benutzer in jeder Gruppe zu laden, damit alle Eigenschaften jedes Benutzers und jeder Gruppe verfügbar sind. Verwenden Sie Methodensyntax für LINQ-Abfragen, um alle Benutzerauflistungen aus allen Gruppen einzubeziehen, wie im folgenden Beispiel veranschaulicht.

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());
}

Zum Zwecke der Effizienzsteigerung können Sie die Load<T>(T, [])-Methode (JavaScript: load(clientObject)) einmal aufrufen und den Abfrageausdruck so modifizieren, dass er nur bestimmte Eigenschaften einschließt, wie im folgenden Beispiel gezeigt.

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());
}

Hinzufügen eines Benutzers zu einer SharePoint-Gruppe

Wenn das Benutzerobjekt, das Sie einer Gruppe hinzufügen möchten, bereits in der Websitesammlung vorhanden ist, können Sie mithilfe der AddUser(User)-Methode (JavaScript: addUser(user)) den Benutzer der Benutzerauflistung der Gruppe hinzufügen. Ist der Benutzer jedoch noch nicht vorhanden, wie im folgenden Codebeispiel, verwenden Sie die UserCreationInformation-Klasse (JavaScript: UserCreationInformation), um einen neuen Benutzer zu definieren, und fügen Sie dann den neuen Benutzer über die Add(UserCreationInformation)-Methode (JavaScript: add(parameters)) der Benutzerauflistung der Gruppe hinzu. In diesem Beispiel wird mithilfe der GetById(Int32)-Methode (JavaScript: getById(id)) eine bestimmte Gruppe aus der Auflistung der Gruppen innerhalb der Websitesammlung zurückgegeben. Anschließend wird ein neues Benutzerobjekt definiert und der Benutzerauflistung der Gruppe hinzugefügt.

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());
}

Informationen und Beispiele zum Verwenden von Clientobjekten im Kontext des Microsoft SharePoint Foundation 2010 Silverlight-Objektmodells finden Sie unter Verwenden des Silverlight-Objektmodells.

Siehe auch

Konzepte

Gewusst wie: Arbeiten mit Rollen

Gewusst wie: Unterbrechen der Vererbung von Rollenzuweisungen

Autorisierung, Benutzer und Gruppen

Übersicht über den Datenabruf

Erstellen von Clientobjekten

Richtlinien für das Clientobjektmodell

Allgemeine Programmieraufgaben

Weitere Ressourcen

Clientklassenbibliothek

ECMAScript-Klassenbibliothek