开始使用 SharePoint 现代化扫描程序

使用 SharePoint 现代化扫描程序,可以为现代化经典网站做好准备。 此扫描程序将帮助你准备以下现代化操作:

  • 优化现代列表和库的使用情况
  • 将这些网站连接到 Microsoft 365 组
  • 通过创建新式网站页面现代化 wiki 和 Web 部件页面
  • 将经典发布门户重新生成为新式发布门户
  • 了解经典博客页面的用法

如果你想要准备现代化你的经典网站,那么此扫描程序是一个重要工具,因为它将为你提供有关轻松现代化你的网站的事实性数据。 使用由扫描程序生成的仪表板,你将能够向下钻取网站的“现代化准备情况”并在需要时计划所需的修正工作。

注意

重要

新式化工具和所有其他 PnP 组件均为开源工具,由一个活跃社区提供支持服务。 没有来自 Microsoft 的官方支持渠道的开放源代码工具支持的 SLA。

步骤 1:获取 SharePoint 现代化扫描程序的最新版本

因为 SharePoint Online 不断发展且不断添加更多新式功能,所以始终下载最新版本的扫描程序很重要。 下载 SharePoint 现代化扫描程序可执行文件并开始使用。 在此页面和链接到它的其他页面中,有帮助你入门的所有信息,还有各项报告详细信息和常见问题解答。

步骤 2:准备扫描

因为典型扫描需要能够扫描所有网站集,所以建议为扫描使用具有租户范围权限的仅限应用主体。 此方法将确保扫描程序始终具有访问权限,如果使用帐户(如你的 SharePoint 租户管理员帐户),则扫描程序仅能访问此用户也具有访问权限的网站。 可以将 Azure AD 应用程序或 SharePoint 应用主体用于仅适用于应用的访问权限,下面的链接描述手动设置内容的方法。 由于建议的方法是“仅限 Azure AD 应用”,因此可以使用 PnP PowerShellInitialize-PnPPowerShellAuthentication cmdlet 轻松设置 Azure AD 应用程序。 参见“使用 Initialize-PnPPowerShellAuthentication 设置 Azure AD 仅限应用”一节了解详细信息。

重要

如果选择的目标是 Azure AD 仅限应用,则上面提及的指令会向 Azure AD 应用授予 Sites.FullControl.All 权限;如果需要运行所有扫描组件,则需要该权限。 如果你不需要扫描工作流,也可以使用 Sites.Read.All 作为 2.6 版及更高版本的权限。 如果想报告已关联 Teams 团队的网站集,需要添加 Group.Read.All权限(版本 2.7 或更高版本)。

准备工作完成后,就可以继续执行扫描。

使用 Initialize-PnPPowerShellAuthentication 设置 Azure AD 仅限应用

若要使用 PnP PowerShell 配置 Azure AD 仅限应用,请按照以下步骤操作:

  1. 安装 PnP PowerShell 或将其更新到2020年4月或更新的版本
  2. 使用 Initialize-PnPPowerShellAuthentication cmdet 设置 Azure AD 应用:
Initialize-PnPPowerShellAuthentication -ApplicationName ModernizationScannerApp -Tenant contoso.onmicrosoft.com -Scopes "SPO.Sites.FullControl.All","MSGraph.Group.Read.All"  -OutPath c:\temp -CertificatePassword (ConvertTo-SecureString -String "password" -AsPlainText -Force)
  1. 系统将要求你进行身份验证,并确保你使用作为租户管理员的用户进行身份验证
  2. cmdlet 将安装一个 Azure AD 应用程序,并等待60秒钟,以使 Azure AD 有时间处理应用程序的创建
  3. 系统将要求你同意将权限授予给创建的 Azure AD 应用:
    1. 首先,系统会要求你再次登录,使用租户管理员帐户
    2. 接下来,将显示具有已经请求权限的同意对话框(请参见下面的屏幕截图)。 单击“接受”。
  4. 将返回的 AzureAppId、创建的 PFX 文件和密码存储在安全的地方,将需要按照通过 Azure AD 仅限应用进行身份验证中所述进行使用

扫描程序同意

步骤 3:使用用户界面选项启动扫描

最简单的方法是直接启动 SharePoint.Modernization.Scanner.exe,因为扫描程序具有 UI。 或者,可以启用 (PowerShell) 命令提示并导航到该文件夹,以便通过命令行使用扫描程序。 此章节将引导你完成采取典型完全扫描的 UI 选项。 首先请启动 SharePoint.Modernization.Scanner.exe。

第 1 页:扫描程序身份验证配置

通过 Azure AD 仅限应用进行身份验证

现代化扫描程序向导的第一页要求你输入身份验证信息。 扫描程序支持四个选项,选择所需的一个选项,然后填写所需的信息,如下所述。 最好使用仅限应用模型,因为这将确保扫描程序有权访问其需要扫描的所有网站。

Azure AD 仅限应用

如果已通过 Azure AD 仅限应用设置了访问权限,则你已创建了 Azure 应用并配置了用于访问它的证书。 需要向工具提供此信息:

  • Azure AD Application ID:Azure AD 环境中创建的应用程序的 ID
  • Azure AD Domain name:Azure AD 环境的默认域。 可以从 Azure AD 管理中心的概述页查找此信息。 通常,此域的格式为 *. onmicrosoft.com,例如 contoso.onmicrosoft.com。
  • Certificate file:向 Azure AD 应用授予仅限应用访问权限的证书,这需要被显示为受密码保护的 PFX 文件
  • Password for the PFX file:用于保护以前提供的 PFX 文件的密码
  • 身份验证区域:如果你的租户位于美国政府 (ITAR)、德国或中国云环境中,则选择相应的区域

注意

你也可以选择在你的计算机上安装证书,然后通过 -w 命令行参数对其进行引用。 若要引用证书,请将此值用于-w 参数 "My |CurrentUser | 1FG498B468AV3895E7659C8A6F098FB701C8CDB1 "。 可使用 My/Root and CurrentUser/LocalMachine 来表示存储。 最后一个参数是证书指纹。 此选项在 2.7 版本或更高版本上可用。 如果使用的是 LocalMachine,请注意,你需要确保扫描程序有权在 LocalMachine 存储中进行读取。 可通过以下方式执行此操作:使用管理特权运行扫描程序进程,或者向正在使用运行现代化扫描的账户授予权限(更佳)来读取存储在 LocalMachine 存储中的私钥和证书。

重要

  • 上面提及的默认指令会向 Azure AD 应用授予 Sites.FullControl.All 权限;如果需要运行所有扫描组件,则需要该权限。 如果你不需要扫描工作流,也可以使用 Sites.Read.All 作为 SharePoint 现代化扫描程序 2.6 版及更高版本的权限。
  • Azure AD的“仅限应用”选项是美国政府 (ITAR)、德国或中国云环境中的租户唯一可用的身份验证选项。

通过 SharePoint AD 仅限应用进行身份验证

SharePoint 仅限应用

在使用“经典”SharePoint 仅限应用方法的情况下,需要指定:

  • Azure ACS Client ID:创建的仅限应用主体的 ID
  • Azure ACS Client Secret:创建应用主体时获得的密码

通过凭据进行身份验证

凭据

使用常规的用户/密码组合也可进行身份验证(假定提供的用户的确具有所需的权限)。 从扫描程序 2.9 版开始,基于用户/密码的身份验证不再依赖于在已扫描租户上启用的旧式身份验证。 这是所使用账户需要多重身份验证时这种类型身份验证不工作的唯一原因。 如果是这种情况,请使用自 2.9 版开始引入的“多重身份验证”选项。

使用多重身份验证进行身份验证(2.9 或更高版本)

MFA

根据你正在使用的租户和账户,你的管理员登录到 SharePoint Online 可能需要进行多重身份验证。 在这种情况下,如果想要通过用户凭据使用扫描程序,则需要使用此选项。 仍然建议使用仅限应用程序的方法,但是如果没有设置仅限应用程序所需的权限,则此方法将允许您扫描拥有访问权限的网站集。 要使用此功能,需要:

  • 输入要扫描的站点的URL(可以访问的任何站点都可以)
  • 单击“登录”按钮,将触发多重身份验证流程

注意

成功登录后,多重身份验证将为扫描仪提供访问令牌。 由于访问令牌的生命周期有限(通常为1小时),因此这意味着扫描只能在令牌仍然有效的情况下访问 SharePoint 网站。

第 2 页:扫描程序站点范围配置

扫描完整租户

此页允许你定义要扫描的网站。 扫描程序支持从完整租户到单独选择的网站集的扫描。

完整租户

扫描完整租户通常是建议的方法,因为这将为所有租户提供现代化报表。 如果这是你的选择,则只需填写你的租户名称。 如果你的租户是使用不以 sharepoint.com 结尾的 URL,则此方法不适用,如果是这种情况,则需要使用以下两个选项之一。

扫描定义的网站集列表

通配符 URL

此选项通过提供以下内容来实现选择一个或多个网站集

  • 需要扫描的网站集的完全限定的 URL
  • 通配符 URL:通过添加以星号结尾的 URL,将包含匹配该筛选器的所有网站。 仅支持以星号结尾的通配符

如果使用的 URL 不以 sharepoint.com (所谓的虚 URL) 结尾,则还需要指定租户管理中心站点 (的 URL, https://contoso-admin.contoso.com 例如,) 。

扫描 CSV 文件中定义的网站集列表

CSV 文件

作为第三个选项,可以提供含有列出要扫描的网站集的 CSV 文件的扫描程序。 此 CSV 文件是不包含标题的网站集 URL 的简单列表,如以下示例所示:

https://contoso.sharepoint.com/sites/hrteam
https://contoso.sharepoint.com/sites/funatwork
https://contoso.sharepoint.com/sites/opensourcerocks

第 3 页:扫描程序模式配置

SharePoint 现代化扫描程序支持多个节点,根据你的现代化模式,你可能想要将扫描的范围限定在某个区域或执行完全扫描。

扫描程序模式

在下拉列表中选择想要使用的选项,然后,复选框将显示将在扫描中包含的组件。 “Microsoft 365 组连接准备情况”组件是将被包含在所有扫描模式中的主要组件。

第 4 页:扫描程序选项

作为最后一步,可以调整扫描程序选项。 根据之前选择的扫描程序模式,某些选项可能会被禁用。

扫描程序选项

可以选择以下扫描选项:

  • Number of threads:扫描是多线程,默认值为 10,但对于更大型的扫描,选择 20-30 线程将会获得更好的扫描性能(里程可能会有所不同)
  • Don't use search:如果对页面/网站使用情况信息感兴趣,则可以取消选择此选项。 因为这会添加每个网站集的一个搜索查询,所以它可使扫描速度稍微慢一些
  • Don't include user information:如果你不想看到用户信息(用户名)作为生成的数据的一部分,则选中此框
  • Exclude lists:对于“新式列表和库体验”扫描,可以排除仅由于 OOB 而被阻止的列表
  • Export page details:默认情况下,扫描不会导出详细的 Web 部件信息(Web 部件属性),因为该数据集可能很庞大。 如果你想要拥有完整的 Web 部件选项数据,请选中此框
  • Don't generate reports:默认情况下,在扫描输出时,你将获取基于 Excel 的仪表板,但是,如果你只想要获取原始 CSV 文件,则可跳过这些步骤
  • Disable feedback:扫描程序会将反馈发送到 Microsoft 以帮助改进扫描程序。 如果你不希望执行此操作,则可随时选中此框
  • Separator:生成的 CSV 文件的默认分隔符是逗号,但如果你希望使用分号,则可将其更改为分号
  • Date format:生成的 CSV 文件中的默认日期格式为月/日/年。 可选择将此格式切换为日/月/年

步骤 3(备选选项):使用命令行参数启动扫描仪

以下选项是大部分客户默认使用的工具:你指定模式、你的租户名称并创建客户端 ID 和密码:

SharePoint.Modernization.Scanner.exe -t <tenant> -i <clientid> -s <clientsecret>

实际工作中的示例:

SharePoint.Modernization.Scanner.exe -t contoso -i 7a5c1615-997a-4059-a784-db2245ec7cc1 -s eOb6h+s805O/V3DOpd0dalec33Q6ShrHlSKkSra1FFw=

上述步骤将运行所有扫描选项,但也可以通过 Mode 参数 (-m) 设定扫描目标:

SharePoint.Modernization.Scanner.exe -m <mode> -t <tenant> -i <clientid> -s <clientsecret>

实际工作中的示例:

SharePoint.Modernization.Scanner.exe -m GroupifyOnly -t contoso -i 7a5c1615-997a-4059-a784-db2245ec7cc1 -s eOb6h+s805O/V3DOpd0dalec33Q6ShrHlSKkSra1FFw=

支持的扫描程序模式

模式 说明
Full 将包含所有组件,省略 -m 具有相同的结果
GroupifyOnly 仅使用 Microsoft 365 组连接准备情况组件,此组件是每个扫描的一部分
ListOnly 包括深层列表扫描 + 包括 Microsoft 365 组连接准备情况组件
HomePageOnly 包括来自 wiki 和 Web 部件页主页的扫描 + 包括 Microsoft 365 组连接准备情况组件
PageOnly 包括来自 wiki 和 Web 部件页的扫描 + 包括 Microsoft 365 组连接准备情况组件
PublishingOnly 包括网站和 Web 级别的经典发布门户 + 包括 Microsoft 365 组连接准备情况组件
PublishingWithPagesOnly 包括网站、Web 和页面级别的经典发布门户扫描 + 包括 Microsoft 365 组连接准备情况组件
InfoPathOnly 包括 InfoPath 扫描 + 包括 Microsoft 365 组连接准备情况组件
BlogOnly 包括博客扫描 + 包括 Microsoft 365 组连接准备情况组件
CustomizedFormsOnly 包括自定义表单扫描 + 包括 Microsoft 365 组连接准备情况组件

注意

应使用 Microsoft 365 评估工具 评估工作流 2013 使用情况

命令行参数概述

SharePoint PnP Modernization scanner 2.19.0.0
Copyright (C) 2020 SharePoint PnP
==========================================================

See the sp-dev-modernization repo for more information at:
https://github.com/SharePoint/sp-dev-modernization/tree/master/Tools/SharePoint.Modernization

Let the tool figure out your urls (works only for SPO MT):
==========================================================
Using Azure AD app-only:
SharePoint.Modernization.Scanner.exe -t <tenant> -i <your client id> -z <Azure AD domain> -f <PFX file> -x <PFX file
password>
e.g. SharePoint.Modernization.Scanner.exe -t contoso -i e5808e8b-6119-44a9-b9d8-9003db04a882 -z conto.onmicrosoft.com
-f apponlycert.pfx -x pwd

Using app-only:
SharePoint.Modernization.Scanner.exe -t <tenant> -i <your client id> -s <your client secret>
e.g. SharePoint.Modernization.Scanner.exe -t contoso -i 7a5c1615-997a-4059-a784-db2245ec7cc1 -s
eOb6h+s805O/V3DOpd0dalec33Q6ShrHlSKkSra1FFw=

Using credentials:
SharePoint.Modernization.Scanner.exe -t <tenant> -u <your user id> -p <your user password>

e.g. SharePoint.Modernization.Scanner.exe -t contoso -u spadmin@contoso.onmicrosoft.com -p pwd

Specifying url to your sites and tenant admin (needed for SPO with vanity urls):
================================================================================
Using Azure AD app-only:
SharePoint.Modernization.Scanner.exe -r <wildcard urls> -a <tenant admin site>  -i <your client id> -z <Azure AD
domain> -f <PFX file> -x <PFX file password>
e.g. SharePoint.Modernization.Scanner.exe -r "https://teams.contoso.com/sites/*,https://my.contoso.com/personal/*" -a
https://contoso-admin.contoso.com -i e5808e8b-6119-44a9-b9d8-9003db04a882 -z conto.onmicrosoft.com  -f apponlycert.pfx
-x pwd

Using app-only:
SharePoint.Modernization.Scanner.exe -r <wildcard urls> -a <tenant admin site> -i <your client id> -s <your client
secret>
e.g. SharePoint.Modernization.Scanner.exe -r "https://teams.contoso.com/sites/*,https://my.contoso.com/personal/*" -a
https://contoso-admin.contoso.com -i 7a5c1615-997a-4059-a784-db2245ec7cc1 -s
eOb6h+s805O/V3DOpd0dalec33Q6ShrHlSKkSra1FFw=

Using credentials:
SharePoint.Modernization.Scanner.exe -r <wildcard urls> -a <tenant admin site> -u <your user id> -p <your user
password>
e.g. SharePoint.Modernization.Scanner.exe -r "https://teams.contoso.com/sites/*,https://my.contoso.com/personal/*" -a
https://contoso-admin.contoso.com -u spadmin@contoso.com -p pwd


  -i, --clientid                           Client ID of the app-only principal used to scan your site collections

  -s, --clientsecret                       Client Secret of the app-only principal used to scan your site collections

  -u, --user                               User id used to scan/enumerate your site collections

  -p, --password                           Password of the user used to scan/enumerate your site collections

  -z, --azuretenant                        Azure tenant (e.g. contoso.microsoftonline.com)

  -y, --azureenvironment                   (Default: Production) Azure environment (only works for Azure AD Cert
                                           auth!). Possible values: Production, USGovernment, Germany, China

  -f, --certificatepfx                     Path + name of the pfx file holding the certificate to authenticate

  -x, --certificatepfxpassword             Password of the pfx file holding the certificate to authenticate

  -a, --tenantadminsite                    Url to your tenant admin site (e.g. https://contoso-admin.contoso.com): only
                                           needed when your not using SPO MT

  -t, --tenant                             Tenant name, e.g. contoso when your sites are under
                                           https://contoso.sharepoint.com/sites. This is the recommended model for
                                           SharePoint Online MT as this way all site collections will be scanned

  -r, --urls                               List of (wildcard) urls (e.g.
                                           https://contoso.sharepoint.com/*,https://contoso-my.sharepoint.com,https://co
                                           ntoso-my.sharepoint.com/personal/*) that you want to get scanned. Ignored if
                                           -t or --tenant are provided.

  -o, --includeod4b                        (Default: False) Include OD4B sites in the scan

  -v, --csvfile                            CSV file name (e.g. input.csv) which contains the list of site collection
                                           urls that you want to scan

  -h, --threads                            (Default: 10) Number of parallel threads, maximum = 100

  -e, --separator                          (Default: ,) Separator used in output CSV files (e.g. ";")

  -m, --mode                               (Default: Full) Execution mode. Use following modes: Full, GroupifyOnly,
                                           ListOnly, PageOnly, HomePageOnly, PublishingOnly, PublishingWithPagesOnly,
                                           WorkflowOnly, WorkflowWithDetailsOnly, InfoPathOnly, BlogOnly or CustomizedFormsOnly. Omit or use
                                           full for a full scan

  -b, --exportwebpartproperties            (Default: False) Export the web part property data

  -c, --skipusageinformation               (Default: False) Don't use search to get the site/page usage information and
                                           don't export that data

  -j, --skipuserinformation                (Default: False) Don't include user information in the exported data

  -k, --skiplistsonlyblockedbyoobreaons    (Default: False) Exclude lists which are blocked due to out of the box
                                           reasons: base template, view type of field type

  -d, --skipreport                         (Default: False) Don't generate an Excel report for the found data

  -g, --exportpaths                        List of paths (e.g. c:\temp\636529695601669598,c:\temp\636529695601656430)
                                           containing scan results you want to add to the report

  -n, --disabletelemetry                   (Default: False) We use telemetry to make this a better tool...but you're
                                           free to disable that

  -q, --dateformat                         (Default: M/d/yyyy) Date format to use for date export in the CSV files. Use
                                           M/d/yyyy or d/M/yyyy

  -w, --storedcertificate                  (Default: ) Path to stored certificate in the form of
                                           StoreName|StoreLocation|Thumbprint. E.g.
                                           My|LocalMachine|3FG496B468BE3828E2359A8A6F092FB701C8CDB1

  --help                                   Display this help screen.