以编程方式预配“新式”团队网站

2016 年秋季,SharePoint Online 中引入了“新式”网站,用户可以在租户级别控制如何使用此类网站。 本文介绍了在 SharePoint Online 中预配“新式”网站的各种不同方法和注意事项。 特别是,本文介绍了如何创建“新式”团队网站和“新式”通信网站。

重要

我们不会弃用“经典”体验;“经典”和“新式”体验将同时共存。

比较“新式”团队网站和“新式”通信网站

深入详细介绍如何预配“新式”网站前,我们先探讨一下两大类“新式”网站:团队网站和通信网站。

“新式”团队网站是一个可供一群人相互配合、协作、共享文档和消息的地方。 为了提升整体协作体验,每个“新式”团队网站都有后备 Microsoft 365 组。 实际上,得益于 Microsoft 365 组,团队成员可以从 Planner、共享日历、共享 OneDrive for Business 存储、自定义 Office 365 连接器等服务中受益。 在“新式”团队网站中,成员通常可以参与改进内容(读/写)。 此外,“新式”团队网站的后备 Microsoft 365 组可以是专用组,也可以是公用组;默认为公用组。

“新式”通信网站是一个可供共享资讯、展示文章、广播消息的地方。 通信网站旨在让少数几个编辑者创建和维护内容,而让大量受众使用内容。 不过,通信网站没有后备 Microsoft 365 组。 用户可以借助其他任何 SharePoint 网站的一组已知权限访问目标通信网站;默认情况下,每个通信网站都是专用网站。

因此,如果需要创建支持团队协作的网站,那么理想之选最有可能是“新式”团队网站。 相反,若要向一大批人传达内容,那么最佳选择可能是通信网站。

预配“新式”团队网站

此部分将介绍如何预配“新式”团队网站,以及具体有哪些方法可供选择。

通过用户界面预配“新式”团队网站

预配“新式”团队网站的途径有很多种。 可以直接从 SharePoint Online 网站启动预配,也可以从其他位置(例如,从 Outlook)预配 Microsoft 365 组,这之后也会触发预配“新式”团队网站。

  • 如果管理员在租户中启用了“新式”团队网站,则你可以通过 SharePoint 起始页创建“新式”团队网站。

  • 也可以通过 Office 365 Outlook 创建 Microsoft 365 组。如果访问此组的“网站”选项卡,就会到达“新式”团队网站。

控制默认的预配流

可以通过 SharePoint Online 管理设置来控制 SharePoint 网站的创建过程。 可以选择是否为最终用户提供“新式”体验,或者选择你是否愿意继续使用“经典”体验。

SharePoint Online 管理 UI 中的“网站创建”选项

有关详细信息,请参阅以下 Office 支持文章:

通过 SharePoint Online REST API 以编程方式预配“新式”团队网站

可以使用 SharePoint Online 提供 REST API 以编程方式创建“新式”团队网站,这些网站也可供 SharePoint Online 的“创建网站”UI 使用。 若要通过 REST 预配“新式”团队网站,请对 Microsoft Graph“组”终结点发出 POST 请求:https://graph.microsoft.com/v1.0/groups

“新式”团队网站的 URI 由 mailNickname 参数和在租户管理(这默认为“网站”)中为团队网站所选的托管路径决定。

以下操作将创建 Microsoft 365 组和含有 URL https://[tenant].sharepoint.com/sites/mymodernteamsite 的关联的“新式”团队网站

POST https://graph.microsoft.com/v1.0/groups
Content-type: application/json
Content-length: 200

{
  "description": "description",
  "displayName": "My modern team site",
  "groupTypes": [
    "Unified"
  ],
  "mailEnabled": true,
  "mailNickname": "mymodernteamsite",
  "securityEnabled": false
}

使用 PnP CSOM 核心组件预配“新式”团队网站

在 SharePoint PnP 核心组件中,自 2017 年 10 月版本 (v. 2.19.1710.1) 以来,CSOM ClientContext 类型具有新的扩展方法。 扩展方法名为 CreateSiteAsync,使用此方法在数秒钟内即可创建“新式”团队网站。

下面的代码片段展示了如何使用此方法。

// Let's use the CreateSiteAsync extension method of PnP CSOM Core
// to create the "modern" team site

var targetTenantUrl = "https://[tenant].sharepoint.com/";

using (var context = new ClientContext(targetTenantUrl))
{
    context.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[Name-of-Your-Credentials]");

    // Create new "modern" team site at the url
    // https://[tenant].sharepoint.com/sites/mymodernteamsite
    var teamContext = await context.CreateSiteAsync(
        new TeamSiteCollectionCreationInformation
        {
            Alias = "mymodernteamsite", // Mandatory
            DisplayName = "displayName", // Mandatory
            Description = "description", // Optional
            Classification = "classification", // Optional
            IsPublic = true, // Optional, default true
        });
    teamContext.Load(teamContext.Web, w => w.Url);
    teamContext.ExecuteQueryRetry();
    Console.WriteLine(teamContext.Web.Url);
}

注意

可以在 SharePoint“新式”团队分类中找到有关 Classification 参数的更多详细信息。

可以看到,此扩展方法会新建“新式”团队网站,并返回直接连接到新建网站的新 ClientContext 对象。

使用 PnP PowerShell 预配“新式”团队网站

也可以使用 PnP PowerShell 创建“新式”网站。 下面的脚本创建“新式”团队网站,并返回实际的 SharePoint 网站 URL 以供进一步控制。 有权访问已创建网站的 URL 后,便可使用 CSOM(包含 SharePoint PnP 核心组件)或 SharePoint PnP-PowerShell 对已创建网站自动执行其他操作。

# Connect to SharePoint Online
# This command will prompt the sign-in UI to authenticate
Connect-PnPOnline "https://[tenant].sharepoint.com/"

# Create the new "modern" team site
$teamSiteUrl = New-PnPSite -Type TeamSite -Title "displayName" -Alias "mymodernteamsite" -Description "description" -IsPublic -Classification "classification" 

# Connect to the modern site using PnP PowerShell SP cmdlets
# Since we are connecting now to SP side, credentials will be asked
Connect-PnPOnline $teamSiteUrl

# Now we have access on the SharePoint site for any operations
$web = Get-PnPWeb -Includes WebTemplate, Configuration
$web.WebTemplate + "#" + $web.Configuration

注意

PnP PowerShell 是一种开放源代码解决方案,其中包含为其提供支持的活动社区。 没有用于 Microsoft 开放源代码工具支持的 SLA。

使用 Microsoft 365 CLI 预配“新式”团队网站

此外,Microsoft 365 CLI 可用于创建“新式”网站。 Microsoft 365 CLI 是跨平台命令行接口,可用于任何平台,包括 Windows、MacOS 和 Linux。

注意

CLI for Microsoft 365是一种开放源代码解决方案,其中包含为其提供支持的活动社区。 没有用于 Microsoft 开放源代码工具支持的 SLA。

下面的 Bash 脚本展示了如何创建“新式”团队网站,并返回实际 SharePoint 网站 URL 以供进一步控制。 一旦拥有访问创建的网站的 URL 的权限,就可以使用在创建的网站上自动执行其他操作。

#!/usr/bin/env bash
# Connect to Microsoft 365 tenant
# This command will prompt a sign-in confirmation message to authenticate
m365 login

# Create the new "modern" team site
siteUrl=$(m365 spo site add --type TeamSite --title 'displayName' --alias 'mymodernteamsite' --description 'description' --isPublic --classification 'classification')

# Display the modern site url
echo $siteUrl

# Since the CLI for Microsoft 365 is connected to Microsoft 365 tenant we can do any operations. 
# As example, we can list all the properties from the site property bag:
m365 spo propertybag list -u $siteUrl

以编程方式预配 Microsoft 365 组

也可以使用 Microsoft Graph 创建 Microsoft 365 组,以编程方式创建“新式”团队网站。 实际上,创建 Microsoft 365 组后,此组会自动预配有“新式”团队网站。 “新式”团队网站 URI 以 Microsoft 365 组的 mailNickname 参数为依据,采用以下默认结构。

https://[tenant].sharepoint.com/sites/[mailNickname]

注意

若要详细了解如何使用 Microsoft Graph 创建组,请参阅官方文档

使用 PnP CSOM 核心组件预配 Microsoft 365 组

NuGet 包形式的 PnP CSOM 核心组件简化了“新式”组处理方法。

/// <summary>
/// Let's use the UnifiedGroupsUtility class from PnP CSOM Core to simplify managed code operations for Microsoft 365 groups
/// </summary>
/// <param name="accessToken">Azure AD Access token with Group.ReadWrite.All permission</param>
public static void ManipulateModernTeamSite(string accessToken)
{
    // Create new modern team site at the url https://[tenant].sharepoint.com/sites/mymodernteamsite
    Stream groupLogoStream = new FileStream("C:\\groupassets\\logo-original.png", 
                                            FileMode.Open, FileAccess.Read);
    var group = UnifiedGroupsUtility.CreateUnifiedGroup("displayName", "description", 
                            "mymodernteamsite", accessToken, groupLogo: groupLogoStream);
            
    // We received a group entity containing information about the group
    string url = group.SiteUrl;
    string groupId = group.GroupId;

    // Get group based on groupID
    var group2 = UnifiedGroupsUtility.GetUnifiedGroup(groupId, accessToken);
    // Get SharePoint site URL from group id
    var siteUrl = UnifiedGroupsUtility.GetUnifiedGroupSiteUrl(groupId, accessToken);

    // Get all groups in the tenant
    List<UnifiedGroupEntity> groups = UnifiedGroupsUtility.ListUnifiedGroups(accessToken);

    // Update description and group logo programatically
    groupLogoStream = new FileStream("C:\\groupassets\\logo-new.png", FileMode.Open, FileAccess.Read);
    UnifiedGroupsUtility.UpdateUnifiedGroup(groupId, accessToken, description: "Updated description", 
                                            groupLogo: groupLogoStream);

    // Delete group programatically
    UnifiedGroupsUtility.DeleteUnifiedGroup(groupId, accessToken);
}

使用 PnP PowerShell 预配 Microsoft 365 组

也可以使用 PnP PowerShell 创建 Microsoft 365 组。使用这种方法,可以轻松地使用 Azure Active Directory 进行 Microsoft Graph 身份验证。 下面的脚本展示了如何创建 Microsoft 365 组和“新式”团队网站,并返回实际 SharePoint 网站 URL 以供进一步控制。 有权访问已创建网站的 URL 后,便可使用 CSOM(包含 SharePoint PnP 核心组件)或 SharePoint PnP-PowerShell 对已创建网站自动执行其他操作。

# Connect to your SharePoint admin center, credentials will be asked
Connect-PnPOnline -Url https://contoso-admin.sharepoint.com

# Create a new modern team site
New-PnPSite -Type Team -Title "Awesome Group" -Description "Awesome Group" -Alias "awesome-group"

使用 SharePoint Online Management Shell 或 PnP PowerShell 预配新式团队网站

也可以使用 PowerShell 创建未连接到组的新式网站。 使用 PnP PowerShell cmdlet 或 SharePoint Online Management Shell。

$title = "Awesome ModernTeamsite"
$url = "https://contoso.sharepoint.com/sites/awesomemodernteamsite"
$owner = "denisd@contoso.com"

// SharePoint Online Management Shell
New-SPOSite -Title $_title -Url $_url -Owner $owner -StorageQuota 512 -Template "STS#3"

// PnP
New-PnPTenantSite -Url $_url -Description $_title -Title $_title -Template STS#3 -Owner $owner

使用 Microsoft 365 CLI 预配 Microsoft 365 组

此外,Microsoft 365 CLI 可用于创建 Microsoft 365 组。

#!/usr/bin/env bash
# Connect to Microsoft 365 tenant
# This command will prompt a sign-in confirmation message to authenticate
m365 login

# Create a Microsoft 365 group
# The newly created SharePoint site for that group will have the URL
# https://[tenant].sharepoint.com/sites/awesome-group
m365 aad o365group add --displayName 'Awesome Group' --description 'Awesome Group' --mailNickname awesome-group

预配“新式”通信网站

此部分将介绍如何预配“新式”通信网站,以及具体有哪些方法可供选择。

通过用户界面预配“新式”通信网站

若要使用用户界面预配“新式”通信网站(如果你的管理员在你的租户中启用了“新式”团队网站),你可以直接从 SharePoint Online 主页开始。 选择“创建网站”按钮,选择创建“通信网站”,选择网站设计,并提供名称和说明,网站将在数秒钟内创建完成。

截至本文撰写之时,可供选择的通信网站设计如下:

  • 主题:如果需要共享大量信息(如资讯、活动和其他内容),请使用此设计。
  • 展示:此设计可用于通过照片或图像来展示产品、团队或活动。
  • 空白:从空白网站入手,轻松、快速地设计网站。

以编程方式预配“新式”通信网站

如果愿意,可以使用 CSOM 和 PnP 或 PowerShell 以编程方式创建“新式”通信网站。

使用 PnP CSOM 核心组件预配“新式”通信网站

NuGet 包形式的 PnP CSOM 核心组件简化了“新式”网站处理方法。

// Let's use the CreateSiteAsync extension method of PnP CSOM Core
// to create the "modern" team site

var targetTenantUrl = "https://[tenant].sharepoint.com/";

using (var context = new ClientContext(targetTenantUrl))
{
    context.Credentials = OfficeDevPnP.Core.Utilities.CredentialManager.GetSharePointOnlineCredential("[Name-of-Your-Credentials]");

    // Create new "modern" communication site at the url https://[tenant].sharepoint.com/sites/mymoderncommunicationsite
    var communicationContext = await context.CreateSiteAsync(new CommunicationSiteCollectionCreationInformation {
        Title = "title", // Mandatory
        Description = "description", // Mandatory
        Lcid = 1033, // Mandatory
        AllowFileSharingForGuestUsers = false, // Optional
        Classification = "classification", // Optional
        SiteDesign = CommunicationSiteDesign.Topic, // Mandatory
        Url = "https://[tenant].sharepoint.com/sites/mymoderncommunicationsite", // Mandatory
    });
    communicationContext.Load(communicationContext.Web, w => w.Url);
    communicationContext.ExecuteQueryRetry();
    Console.WriteLine(communicationContext.Web.Url);
}

可以看到,此扩展方法会新建“新式”通信网站,并返回直接连接到新建网站的新 ClientContext 对象。

使用 PnP PowerShell 预配“新式”通信网站

下面的脚本展示了如何创建“新式”通信网站,并返回实际 SharePoint 网站 URL 以供进一步控制,类似上面的“新式”团队网站示例。

# Connect to SharePoint Online
# This command will prompt the sign-in UI to authenticate
Connect-PnPOnline "https://[tenant].sharepoint.com/"

# Create the new "modern" communication site
$communicationSiteUrl = New-PnPSite -Type CommunicationSite -Title "displayName" -Url "https://[tenant].sharepoint.com/sites/mymoderncommunicationsite" -Description "description" -Classification "classification" -SiteDesign Topic

# Connect to the modern site using PnP PowerShell SP cmdlets
# Since we are connecting now to SP side, credentials will be asked
Connect-PnPOnline $communicationSiteUrl

# Now we have access on the SharePoint site for any operations
$context = Get-PnPContext
$web = Get-PnPWeb
$context.Load($web, $web.Title)
Execute-PnPQuery
$web.Title

使用 Microsoft 365 CLI 预配“新式”通信网站

此外,CLI for Microsoft 365 可用于创建“新式”通信网站。 下面的 Bash 脚本将创建网站,然后返回实际 SharePoint 网站 URL 以供进一步控制。 一旦拥有访问 URL 的权限,就可以使用在创建的网站上自动执行其他操作。

#!/usr/bin/env bash
# Connect to Microsoft 365 tenant
# This command will prompt a sign-in confirmation message to authenticate
m365 login

# Create the new "modern" communication site
siteUrl=$(m365 spo site add --type CommunicationSite --url https://[tenant].sharepoint.com/sites/mymoderncommunicationsite --title displayName --description description --classification classification)

# Display the modern site url
echo $siteUrl

# Since the CLI for Microsoft 365 is connected to your Microsoft 365 tenant we can do any operations. 
# As example, we can list all the properties from the site property bag:
m365 spo propertybag list -u $siteUrl

其他注意事项

子网站使用“经典”模板

如果在“新式”网站集的根网站下预配子网站,子网站使用的是“经典”模板。 暂无可用的“新式”子网站模板。 可以在网站中创建“新式”页面,再将欢迎页更新为新创建的页面,从而将“经典”子网站转换为“新式”团队网站。

如果不想让用户在“新式”网站集下创建“经典”子网站,作为管理员可以转到 SharePoint 管理中心,选择“设置”页,再将“子网站创建”选项配置为隐藏“子网站”创建菜单。 下图展示了“子网站创建”选项。

SharePoint Online 管理 UI 中的“子网站创建”选项

经典 SharePoint 管理 UI/租户 API 中不会列出网站

SharePoint 管理 UI 中不会显示“新式”团队网站。 可以通过 Office 365 管理员门户下的 Microsoft 365 组管理用户界面访问“新式”团队网站的列表。 SharePoint Online 管理用户界面只会列出“经典”SharePoint 网站。 同一限制并不适应于租户 API:可以使用此 API 与“经典”团队网站一起枚举“新式”团队网站。 若要获取只包含“新式”团队网站的列表,还可以使用 Microsoft Graph API 中的组终结点。

我们还即将推出新 SharePoint 管理 UI,支持同时管理新的“新式”网站集和“经典”网站集。

另请参阅