对于新的经典页面评估和转换项目,请从 Microsoft Learn 上的 评估和转换经典 SharePoint 页面 开始。 本指南包括要求、应用程序设置、评估执行、报告解释、CSV 参考、发布页面准备情况、PnP PowerShell 转换和验证。
SharePoint 现代化扫描程序是旧工具,不再主动维护。 其文档仍然可供已使用扫描程序、需要解释现有扫描程序报告或需要 Microsoft 365 评估工具中尚不可用的功能的客户使用。
| 应用场景 | 从这里开始 |
|---|---|
| 评估和转换经典 SharePoint 页面 | 从独立的 Microsoft Learn 工作流开始 |
| 查看现有 SharePoint 现代化扫描程序运行的输出 | 使用此存档中的旧版扫描程序报告文档 |
| 继续已建立的扫描仪工作流或使用仅扫描仪功能 | 使用旧版扫描仪文档并验证该功能是否仍然适用于你的环境 |
| 评估 SharePoint 服务器 或其他本地环境 | 使用 SharePoint 迁移评估工具 或其他特定于方案的评估工具 |
重要
旧扫描程序将为现有用户按原样保留。 其身份验证流、依赖项和命令示例可能不再代表当前建议的做法。 在依赖扫描程序之前,请在非生产环境中对其进行测试。
旧版扫描仪文档
以下各节介绍了旧版 SharePoint 现代化扫描程序,供仍需要它的客户使用。
步骤 1:下载旧版 SharePoint 现代化扫描程序
下载 旧版 SharePoint 现代化扫描程序可执行文件。 扫描仪不再主动维护,因此在使用之前请验证其行为和身份验证模型。
步骤 2:准备扫描
由于典型的扫描需要能够扫描所有网站集,因此建议使用具有租户范围扫描权限的仅限应用的主体。 此方法将确保扫描程序始终具有访问权限。 例如,如果使用帐户 (,例如你的 SharePoint 租户管理员帐户) ,则扫描程序只能访问此用户也有权访问的网站。 可使用 Azure AD 应用程序或 SharePoint 应用主体进行仅限应用的访问,下面的链接介绍了手动设置方法。 由于建议的方法仅限 Azure AD 应用,因此可以使用 PnP PowerShellRegister-PnPAzureADApp cmdlet 轻松设置 Azure AD 应用程序。 有关更多详细信息,请参阅“使用 Register-PnPAzureADApp 设置仅限 AD 应用”一章Azure。
重要
如果选择仅 Azure AD 应用,则上述说明会向 Azure AD 应用授予 Sites.FullControl.All 权限,如果想要运行所有扫描组件,则需要这些权限。 如果对工作流扫描不感兴趣,也可以从) 版本 2.6 开始使用 Sites.Read.All 作为权限 (。 如果要报告链接了 Teams 团队的网站集,则还需要添加从 2.7 版开始的 Group.Read.All 权限 () 。
准备工作完成后,让我们继续扫描。
使用 Register-PnPAzureADApp 设置 Azure AD App-Only
若要使用 PnP PowerShell 配置 Azure AD 仅限应用,请按照以下步骤操作:
安装 PnP PowerShell 或将其更新到2020年4月或更新的版本
使用
Register-PnPAzureADAppcmdet 设置 Azure AD 应用:Register-PnPAzureADApp -ApplicationName "ModernizationScannerApp" -Tenant "contoso.onmicrosoft.com" -OutPath "C:\temp" -CertificatePassword (ConvertTo-SecureString -String "password" -AsPlainText -Force) -SharePointApplicationPermissions "Sites.FullControl.All" -GraphApplicationPermissions "Group.Read.All"系统将要求你进行身份验证。 确保使用作为租户管理员的用户进行身份验证
该 cmdlet 将设置 Azure AD 应用,并等待 60 秒,以便 Azure AD 有时间处理应用创建
系统将要求同意授予创建的 Azure AD 应用程序的权限:
- 首先,系统会要求你重新登录并使用租户管理员帐户
- 接下来,将显示同意对话框以及请求的权限 (请参阅下面的屏幕截图) 。 单击“接受”。
将返回的 AzureAppId、创建的 PFX 文件和密码存储在安全的位置,需要按照标题“仅通过 Azure AD 应用进行身份验证)中所述使用它
步骤 3:使用用户界面选项启动扫描
最简单的方法是直接启动 SharePoint.Modernization.Scanner.exe,因为扫描程序具有 UI。 或者,可以启动 (PowerShell) 命令提示符并导航到该文件夹,以便可以通过命令行使用扫描程序。 本章将引导您完成 UI 选项,进行典型的 完整 扫描。 首先请启动 SharePoint.Modernization.Scanner.exe。
第 1 页:扫描程序身份验证配置
通过 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。 - 证书文件:你授予对 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 权限的默认说明。 如果对工作流扫描不感兴趣,也可以从 SharePoint 现代化扫描程序版本 2.6 开始使用 Sites.Read.All 作为权限。
- Azure AD App-Only 是美国政府 (ITAR) 、德国或中国云环境中的租户唯一支持的身份验证选项。
通过 SharePoint AD 仅限应用进行身份验证
如果使用“经典”SharePoint 仅应用 方法,则需要指定:
- Azure ACS Client ID:创建的仅限应用主体的 ID
- Azure ACS Client Secret:创建应用主体时获得的密码
通过凭据进行身份验证
使用常规的用户/密码组合也可进行身份验证(假定提供的用户的确具有所需的权限)。 从扫描程序的 2.9 版本开始,基于用户/密码的身份验证不再依赖于在扫描的租户上启用的旧身份验证。 此类身份验证不起作用的唯一原因是当用户的帐户需要多重身份验证时。 如果是这种情况,请使用自 2.9 版开始引入的“多重身份验证”选项。
使用多重身份验证进行身份验证(2.9 或更高版本)
根据你使用的租户和帐户,管理员可能需要多重身份验证才能登录到 SharePoint Online。 如果是这种情况,如果要通过用户凭据使用扫描程序,则需要使用此选项。 仍建议使用仅应用的方法,但如果你没有设置仅应用所需的权限,此方法将允许你扫描你作为用户有权访问的网站集。 要使用此功能,需要:
- 输入要扫描的站点的URL(可以访问的任何站点都可以)
- 单击“ 登录 ”按钮,这将触发多重身份验证流
注意
成功登录后,多重身份验证将为扫描程序提供访问令牌。 由于访问令牌的生命周期有限(通常为1小时),因此这意味着扫描只能在令牌仍然有效的情况下访问 SharePoint 网站。
第 2 页:扫描程序站点范围配置
扫描完整租户
此页允许你定义要扫描的网站。 扫描程序支持从完整租户到单独选择的网站集的扫描。
扫描完整租户通常是建议的方法,因为这将为所有租户提供现代化报表。 如果这是你的选择,那么只需填写租户的姓名。 如果租户 使用的 URL 不以 sharepoint.com 结尾,则此方法不起作用,如果是这种情况,则需要使用以下两个选项之一。
扫描定义的网站集列表
此选项通过提供以下内容来实现选择一个或多个网站集
- 需要扫描的网站集的完全限定的 URL
- 通配符 URL:通过添加以星号结尾的 URL,您将包含与该筛选器匹配的所有网站。 仅以星号结尾是受支持的通配符
如果使用的 URL 不以 sharepoint.com 所谓 (虚 URL) 结尾,则还需要指定租户管理中心站点 (的 URL,例如 https://contoso-admin.contoso.com) 。
扫描 CSV 文件中定义的网站集列表
作为第三种选择,可以向扫描程序提供一个 CSV 文件,其中列出了要扫描的网站集。 此 CSV 文件是一个简单的网站集列表;该文件没有标头,如以下示例所示:
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 以帮助改进扫描程序。 如果你不希望执行此操作,则可随时选中此框
- 分隔符:生成的 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 组连接准备情况组件 |
注意
有关当前工作流迁移指南,请参阅 从经典工作流迁移到 Power Automate 流。
命令行参数概述
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.