ScanState 语法

命令 ScanState.exe 与用户状态迁移工具 (USMT) 一起使用,以扫描源计算机、收集文件和设置以及创建存储。 本文讨论 ScanState.exe 命令语法及其可用的选项。

开始前

在运行 ScanState.exe 命令之前,请注意以下各项:

  • 若要确保所有操作系统设置都迁移,请在 中从具有管理凭据的帐户以管理员模式运行 ScanState.exe 命令。

  • 如果迁移存储已加密,则需要加密密钥或包含加密密钥的文件的路径。 请务必记下密钥或密钥文件位置,因为此信息不会保留在迁移存储中的任何位置。 运行命令以解密迁移存储或需要使用恢复实用工具时 LoadState.exe ,需要此信息。 密钥或密钥文件不正确或缺失会导致错误消息。

  • 有关运行 ScanState.exe 命令的软件要求的信息,请参阅 USMT 要求

  • 除非另有说明,否则在命令行上运行工具时,仅使用每个选项一次。

  • 可以在源计算机没有域控制器访问权限的情况下收集域帐户。 此功能无需任何额外配置即可使用。

  • 不兼容的命令行选项表列出了哪些选项可以一起使用,哪些命令行选项不兼容。

  • 保存迁移存储的目录位置将从扫描中排除。 例如,如果将迁移存储保存到 D 驱动器的根目录,则会从扫描中排除 D 驱动器及其所有子目录。

语法

本部分介绍使用 命令时可用的命令行选项的 ScanState.exe 语法和用法。 可以按任意顺序指定选项。 如果 选项包含参数,则可以使用冒号或空格分隔符。

命令 ScanState.exe 的语法为:

ScanState.exe [StorePath] [/apps] [/ppkg:FileName] [/i:[Path\]FileName] [/o] [/v:VerbosityLevel] [/nocompress] [/localonly] [/encrypt /keyString|/keyfile:[Path\]FileName] [/l:[Path\]FileName] [/progress:[Path\]FileName] [/r:TimesToRetry] [/w:SecondsBeforeRetry] [/c] [/p] [/all] [/ui:[DomainName|ComputerName\]UserName] [/ue:[DomainName|ComputerName\]UserName] [/uel:NumberOfDays|YYYY/MM/DD|0] [/efs:abort|skip|decryptcopy|copyraw] [/genconfig:[Path\]FileName[/config:[Path\]FileName] [/?|help]

例如,若要在当前目录中创建 Config.xml 文件,请使用:

ScanState.exe /i:MigApp.xml /i:MigDocs.xml /genconfig:Config.xml /v:13

若要使用 Config.xml 文件和默认迁移 .xml 文件创建加密存储,请使用:

ScanState.exe \\server\share\migration\mystore /i:MigApp.xml /i:MigDocs.xml /o /config:Config.xml /v:13 /encrypt /key:"mykey"

存储选项

Command-Line 选项 描述
StorePath 指示保存文件和设置的文件夹。 StorePath 不能为 C:\。 除非使用 /genconfig 选项,否则必须在命令中ScanState.exe指定 StorePath 选项。 无法指定多个 StorePath 位置。
/应用程序 扫描映像中的应用,并包括它们及其关联的注册表设置。
/ppkg [<FileName>] 导出到特定文件位置。
/o 需要覆盖迁移存储或 Config.xml 文件中的任何现有数据。 如果未指定,则如果迁移存储已包含数据, ScanState.exe 则命令将失败。 此选项不能在命令行上使用多次。
/vsc 此选项使卷影复制服务能够迁移锁定或正在使用的文件。 此命令行选项消除了 ErrorControl> 部分通常遇到的<大多数文件锁定错误。

此选项仅与 ScanState 可执行文件一起使用,不能与 /hardlink 选项结合使用。
/hardlink 启用在指定位置创建硬链接迁移存储。 /nocompress必须使用 选项指定/hardlink选项。
/encrypt [{/key:<KeyString> | /keyfile<file>]} 使用指定的密钥加密存储区。 默认情况下,加密处于禁用状态。 使用此选项时,需要通过以下方式之一指定加密密钥:
  • /keyKeyString 指定加密密钥。 如果 KeyString 中有一个空格,则 KeyString 需要用引号 (") 括起来。
  • /keyfileFilePathAndName 指定包含加密密钥 (.txt) 文件的文本。

建议 KeyString 长度至少为 8 个字符,但不能超过 256 个字符。 /key/keyfile 选项不能在同一命令行上使用。 /encrypt/nocompress 选项不能在同一命令行上使用。
重要提示
使用 /keykeyfile 选项时请谨慎。 例如,有权访问使用这些选项运行命令的 ScanState.exe 脚本的任何人都有权访问加密密钥。

以下示例显示了 ScanState.exe 命令和 /key 选项:
ScanState.exe /i:MigDocs.xml /i:MigApp.xml \server\share\migration\mystore /encrypt /key:mykey
/encrypt<EncryptionStrength> 选项 /encrypt 接受命令行参数,用于定义用于加密迁移存储的加密强度。 有关支持的加密算法的详细信息,请参阅 迁移存储加密
/nocompress StorePath\USMT 中禁用数据压缩并将文件保存到名为“File”的隐藏文件夹中。 默认情况下启用压缩。 将 /nocompress 选项与 选项组合将 /hardlink 生成硬链接迁移存储。 未压缩的存储可用于查看 USMT 存储的内容、解决问题或针对文件运行防病毒实用工具。 此选项应仅在测试环境中使用。 Microsoft建议在生产迁移期间使用压缩存储,除非将 选项与 选项组合在一 /nocompress/hardlink

/nocompress/encrypt 选项不能在命令行上的一个语句中一起使用。 但是,如果迁移了未压缩的存储区,该命令会将 LoadState.exe 每个文件直接从存储区迁移到目标计算机上的正确位置,而不使用临时位置。

例如:
ScanState.exe /i:MigDocs.xml /i:MigApp.xml \server\share\migration\mystore /nocompress

在脱机 Windows 系统上运行 ScanState 命令

命令 ScanState.exe 可以在 Windows 预安装环境中运行, (WinPE) 。 此外,USMT 支持从 Windows.old 目录中包含的以前安装的 Windows 进行迁移。 在 WinPE 中运行命令时ScanState.exe,脱机目录可以是 Windows 目录;在 Windows 中运行命令时ScanState.exe,脱机目录可以是 Windows.old 目录。

在脱机 Windows 映像上运行 ScanState.exe 命令有几个好处,包括:

  • 提高了性能。

    由于 WinPE 是精简操作系统,因此正在运行的服务较少。 在此环境中,命令 ScanState.exe 具有对本地硬件资源的更多访问权限,使 ScanState 能够更快地执行迁移操作。

  • 简化了端到端部署过程。

    通过从 Windows.old 迁移数据,可以在安装新操作系统后执行迁移过程,从而简化端到端部署过程。

  • 提高了迁移的成功率。

    迁移成功率会提高,因为:

    • 脱机时不会锁定文件进行编辑。
    • WinPE 提供对脱机 Windows 文件系统中的文件的管理员访问权限,无需管理员级别访问联机系统。
  • 能够从未启动的计算机恢复 。

    可以从未启动的计算机恢复和迁移数据。

脱机迁移选项

Command-Line 选项 定义
/offline:“Offline.xml 文件的路径” 此选项用于定义脱机 .xml 文件的路径,该文件可能指定其他脱机迁移选项。 例如,脱机 Windows 目录或迁移所需的任何域或文件夹重定向。
/offlinewindir:“Windows 目录的路径” 此选项指定命令从中收集用户状态的脱机 Windows 目录 ScanState.exe 。 在 Windows 中运行命令时ScanState.exe,脱机目录可以是 Windows.old;在 WinPE 中运行命令时,ScanState.exe脱机目录可以是 Windows 目录。
/offlinewinold:“Windows.old directory” 此命令行选项启用脱机迁移模式,并从指定的位置开始迁移。 此选项仅用于 从 Windows.old 目录进行迁移的 Windows.old 迁移方案。

迁移规则选项

USMT 提供以下选项来指定要迁移的文件。

Command-Line 选项 描述
/i:[Path]FileName (包括)

指定 .xml 文件,其中包含定义要迁移的用户、应用程序或系统状态的规则。 可以多次指定此选项,以包括所有 .xml 文件 (MigApp.xmlMigDocs.xml以及) 创建的任何自定义 .xml 文件。 路径 可以是相对路径或完整路径。 如果未指定 Path 变量,则 FileName 必须位于当前目录中。 有关要指定哪些文件的详细信息,请参阅 常见问题解答 一文的“XML 文件”部分。
/genconfig:[Path]FileName (生成 Config.xml)

生成可选 Config.xml 文件,但不创建迁移存储。 若要确保此文件包含需要迁移的所有内容,请在包含以下各项的源计算机上创建此文件:
  • 组件
  • applications
  • settings
存在于目标计算机上。 此外,在指定此选项时,应使用 /i 选项指定其他迁移 .xml 文件。

创建此文件后,可以使用 /config 选项将其与 命令一起使用ScanState.exe

可以使用此选项指定的唯一选项是 /i/v/l 选项。 无法指定 StorePath,因为 /genconfig 选项不会创建存储区。 路径 可以是相对路径或完整路径。 如果未指定 Path 变量,则会在当前目录中创建 FileName

示例:
  • 以下示例在当前目录中创建一个 Config.xml 文件:
    ScanState.exe /i:MigApp.xml /i:MigDocs.xml /genconfig:Config.xml /v:13
/config:[Path]FileName 指定 Config.xml 命令应用于创建存储区的文件 ScanState.exe 。 此选项不能在命令行上使用多次。 路径 可以是相对路径或完整路径。 如果未指定 Path 变量,则 FileName 必须位于当前目录中。

以下示例使用 Config.xml 文件 、 和 MigApp.xml 文件MigDocs.xml创建存储:
ScanState.exe \server\share\migration\mystore /config:Config.xml /i:MigDocs.xml /i:MigApp.xml /v:13 /l:ScanState.log

以下示例使用 Config.xmlMigDocs.xml和 文件将文件和 MigApp.xml 设置迁移到目标计算机:
LoadState.exe \server\share\migration\mystore /config:Config.xml /i:MigDocs.xml /i:MigApp.xml /v:13 /l:LoadState.log
/auto:脚本文件的路径 此选项允许指定默认 .xml 文件的位置。 如果未指定路径,则 USMT 引用 USMT 二进制文件所在的目录。 选项 /auto 的效果与使用以下选项的效果相同: /i: MigDocs.xml /i:MigApp.xml /v:5
/genmigxml:文件路径 此选项指定 ScanState.exe 命令应使用文档查找器创建和导出 .xml 文件,该文件定义如何迁移运行命令的计算机上的 ScanState.exe 所有文件。
/localonly 仅迁移存储在本地计算机上的文件,而不考虑命令行中指定的 .xml 文件中的规则。 当源计算机上存在映射的网络驱动器时,应使用此选项从源计算机上的可移动驱动器中排除数据。 可移动驱动器的示例包括 U 盘 (UFD) 和某些外部硬盘驱动器。 /localonly如果未指定 选项,则该命令会将ScanState.exe文件从这些可移动驱动器或网络驱动器复制到存储中。

/localonly 排除操作系统不被视为固定驱动器的任何内容。 在某些情况下,大型外部硬盘驱动器被视为固定驱动器。 可以使用自定义 .xml 文件从迁移中显式排除这些驱动器。 有关如何排除特定驱动器上的所有文件的详细信息,请参阅 排除文件和设置

/localonly命令行选项包括或排除以下存储位置中标识的迁移中的数据:
  • 可移动驱动器(如 U 盘 ) - 排除
  • 网络驱动器 - 排除
  • 固定驱动器 - 包含

监视选项

USMT 提供了多个选项,可用于分析迁移过程中出现的问题。

注意

默认情况下会创建 ScanState 日志,但日志的名称和位置可以使用 /l 选项指定。

Command-Line 选项 描述
/listfiles:<FileName> /listfiles命令行选项可与 命令一起使用,ScanState.exe以生成一个文本文件,其中列出了迁移中包含的所有文件。
/l:[Path]FileName 指定 ScanState 日志的位置和名称。

日志文件不能存储在 StorePath 中路径 可以是相对路径或完整路径。 如果未指定 Path 变量,则会在当前目录中创建日志。 选项 /v 可用于调整输出量。

ScanState.exe如果命令是从共享网络资源运行的,/l则必须指定 选项,否则 USMT 将失败并出现以下错误:

USMT 无法创建日志文件 ()

若要解决此问题,请确保在从共享网络资源运行时ScanState.exe指定 /l 选项。
/v:<VerbosityLevel> (详细)

ScanState 日志文件中启用详细输出。 默认值为 0。

VerbosityLevel 可以设置为以下级别之一:
  • 0 - 仅启用默认错误和警告。
  • 1 - 启用详细输出。
  • 4 - 启用错误和状态输出。
  • 5 - 启用详细和状态输出。
  • 8 - 启用错误输出到调试器。
  • 9 - 启用调试器的详细输出。
  • 12 - 启用调试器的错误和状态输出。
  • 13 - 启用详细、状态和调试器输出。

例如:
ScanState.exe \server\share\migration\mystore /v:13 /i:MigDocs.xml /i:MigApp.xml
/progress:[Path]FileName 创建可选的进度日志。 日志文件不能存储在 StorePath 中路径 可以是相对路径或完整路径。 如果未指定 Path 变量,则会在当前目录中创建 FileName

例如:
ScanState.exe /i:MigApp.xml /i:MigDocs.xml \server\share\migration\mystore /progress:Progress.log /l:scanlog.log
/c 指定此选项后,即使发生非严重错误, ScanState.exe 命令也会继续运行。 导致错误的任何文件或设置都会记录在进度日志中。 例如,如果存储区中存在不适合的大型文件,该命令会 ScanState.exe 记录错误并继续迁移。 此外,如果应用程序打开或正在使用某个文件,则 USMT 可能无法迁移该文件并记录错误。 /c如果没有 选项,命令将在ScanState.exe第一个错误时退出。

文件中<的 Config.xmlErrorControl> 部分可用于指定可以安全地忽略哪些文件或注册表读/写错误,以及哪些错误可能导致迁移失败。 文件中的 Config.xml 这一优势使 /c 命令行选项能够安全地跳过环境中所有输入/输出 (I/O) 错误。 此外,/genconfig 选项现在生成一个示例 <ErrorControl> 节,该节通过在文件中指定错误消息和所需行为 Config.xml 来启用。
/r:<TimesToRetry> (重试)

指定在将用户状态保存到服务器时发生错误时重试的次数。 默认值为三次。 此选项在网络连接不可靠的环境中很有用。

存储用户状态时, /r 选项无法恢复因网络硬件故障(例如网络电缆故障或断开连接)或虚拟专用网络 (VPN) 连接失败而丢失的数据。 重试选项适用于连接令人满意但通信延迟存在问题的大型繁忙网络。
/w:<SecondsBeforeRetry> (等待)

指定重试网络文件操作之前等待的时间(以秒为单位)。 默认值为 1 秒。
/p:<pathToFile> ScanState.exe当命令运行时,它会在指定的路径中创建 .xml 文件。 此 .xml 文件包括改进的迁移存储的空间估计。 以下示例演示如何创建此 .xml 文件:
ScanState.exe C:\MigrationLocation [additional parameters]
/p:"C:\MigrationStoreSize.xml"

有关详细信息,请参阅 估计迁移存储区大小

若要保留需要 USMT 先前行为的现有应用程序或脚本的功能,/p可以在 USMT 中使用 选项,而无需指定“pathtoafile”。 如果仅 /p 指定 了 选项,则存储空间估算的创建方式与 USMT 3.x 版本相同。
/?/help 在命令行中显示“帮助”。

用户选项

默认情况下,将迁移所有用户。 指定要包含和排除的用户的唯一方法是使用以下选项。 不能在迁移 .xml 文件或使用 Config.xml 文件排除用户。 有关详细信息,请参阅 标识用户迁移用户帐户

Command-Line 选项 描述
/都 迁移计算机上的所有用户。

USMT 迁移计算机上的所有用户帐户,除非使用 或 /uel 选项专门排除了/ue某个帐户。 因此,不需要在命令行上指定此选项。 但是,如果指定了 /all 选项, /ui则不能也指定 、 /ue/uel 选项。
/ui<DomainName>\<UserName>

/ui<ComputerName>\<LocalUserName>
(用户包括)

迁移指定的用户。 默认情况下,迁移中包括所有用户。 因此,仅当与 或 /uel 选项一起使用时,/ue此选项才有用。 可以指定多个 /ui 选项, /ui 但选项不能与 选项一 /all 起使用。 DomainNameUserName 可以包含星号 (*) 通配符。 指定包含空格的用户名时,需要用引号将其括起来, (") 。
注意
如果指定/ui了包含选项的用户,并且还指定使用 或 /uel 选项排除/ue该用户,则迁移中将包含该用户。

例如:
  • 若要仅包含 Fabrikam 域中的 User2 ,请输入:

    /ue:*\* /ui:fabrikam\user2

  • 若要从 Fabrikam 域迁移所有用户,并且仅迁移过去 30 天内处于活动状态或以其他方式修改的其他域中的用户帐户,请输入:

    /uel:30 /ui:fabrikam\*

    在此示例中,不会迁移两个月前上次修改的 Contoso 域的用户帐户。

有关更多示例,请参阅此表中 和 /ue/ui 选项的说明。
/uel<NumberOfDays>

/uel<YYYY/MM/DD>

/uel:0
(基于上次登录) 排除用户

根据源计算机上的Ntuser.dat文件的 上次修改 日期,迁移在指定时间段内登录到源计算机的用户。 选项 /uel 充当包含规则。 例如, /uel:30 选项迁移自命令运行之日起 ScanState.exe 的过去 30 天内登录的用户或其帐户被修改的用户。

可以指定天数或日期。 此选项不能与 选项一起使用 /all 。 USMT 从本地计算机检索最后一次登录信息,因此运行此选项时,无需将计算机连接到网络。 此外,如果域用户登录到另一台计算机,USMT 不会考虑该登录实例。
注意
选项 /uel 在脱机迁移中无效。
  • /uel:0 迁移当前登录的任何用户。
  • /uel:90 迁移在过去 90 天内登录的用户或其帐户被修改的用户。
  • /uel:1 迁移在过去 24 小时内修改了其帐户的用户。
  • /uel:2020/2/15 迁移 2020 年 2 月 15 日或之后登录或修改的用户。

例如:
ScanState.exe /i:MigApp.xml /i:MigDocs.xml \\server\share\migration\mystore /uel:0
/ue<DomainName>\<UserName>
-或-

/ue<ComputerName>\<LocalUserName>
(用户排除)

从迁移中排除指定的用户。 可以指定多个 /ue 选项。 此选项不能与 选项一起使用 /all <DomainName><UserName> 可以包含星号 () * 通配符。 指定包含空格的用户名时,需要用引号将其括起来, (") 。

例如:
ScanState.exe /i:MigDocs.xml /i:MigApp.xml \\server\share\migration\mystore /ue:contoso\user1

如何使用 /ui 和 /ue

以下示例适用于 /ui/ue 选项。 选项 /ue 可以替换为 /ui 包含(而不是排除)指定用户的选项。

行为 命令
排除 Fabrikam 域中名为 User One 的用户。 /ue:"fabrikam\user one"
排除 Fabrikam 域中名为 User1 的用户。 /ue:fabrikam\user1
排除名为 User1 的本地用户。 /ue:%computername%\user1
排除所有域用户。 /ue:Domain\*
排除所有本地用户。 /ue:%computername%\*
排除名为 User1、User2 等的所有域中的用户。 /ue:*\user*

一起使用选项

/uel/ue/ui 选项可以一起使用,以便仅迁移需要迁移的用户。

选项 /ui 优先于 /ue/uel 选项。 如果指定/ui了包含选项的用户,并且还指定使用 或 /uel 选项排除/ue该用户,则迁移中将包含该用户。 例如,如果 /ui:contoso\* /ue:contoso\user1 指定 了 ,则 迁移 User1 ,因为 /ui 选项优先于 /ue 选项。

选项 /uel 优先于 /ue 选项。 如果用户在 选项设置 /uel 的指定时间段内登录,则即使使用 /ue 选项排除了该用户的配置文件,也会迁移该用户的配置文件。 例如,如果 /ue:fixed\user1 /uel:14 指定 了 ,则如果用户在过去 14 天内登录到计算机,则会迁移 User1。

行为 命令
仅包括 Fabrikam 域中的 User2,并排除所有其他用户。 /ue:*\* /ui:fabrikam\user2
仅包括名为 User1 的本地用户,并排除所有其他用户。 /ue:*\* /ui:user1
仅包括 Contoso 中的域用户,Contoso\User1 除外。 不能使用单个命令完成此行为。 相反,若要迁移这组用户,请指定以下命令:
  • 在命令行上 ScanState.exe ,输入:
    /ue:*\* /ui:contoso\*
  • 在命令行上 LoadState.exe ,输入:
    /ue:contoso\user1
仅包括本地 (非域) 用户。 /ue:*\* /ui:%computername%\*

加密文件选项

以下选项可用于迁移加密文件。 在所有情况下,默认情况下,如果未指定 选项,否则如果找到加密文件, /efs 则 USMT 将失败。 若要迁移加密文件,必须更改默认行为。

有关详细信息,请参阅 迁移 EFS 文件和证书

注意

EFS 证书在迁移过程中会自动迁移。 因此, /efs:copyraw 应使用 ScanState.exe 命令指定选项,以迁移加密的文件。

注意

迁移加密文件时请谨慎。 如果在迁移加密文件时未迁移证书,最终用户将无法在迁移后访问该文件。

Command-Line 选项 说明
/efs:hardlink 创建指向 EFS 文件的硬链接,而不是复制它。 仅与 和 /nocompress 选项一起使用/hardlink
/efs:abort ScanState.exe如果在源计算机上找到加密文件系统 (EFS) 文件,则会导致命令失败并显示错误代码。 默认情况下已启用。
/efs:skip ScanState.exe使命令忽略 EFS 文件。
/efs:decryptcopy ScanState.exe使命令在将文件保存到迁移存储区之前解密文件(如果可能),如果文件无法解密,则命令会失败。 ScanState.exe如果命令成功,则文件在迁移存储中未加密,运行命令后LoadState.exe,该文件将复制到目标计算机。
/efs:copyraw ScanState.exe使命令以加密格式复制文件。 在迁移 EFS 证书之前,目标计算机上无法访问这些文件。 EFS 证书会自动迁移;但是,默认情况下,如果未指定 选项,否则如果未找到加密文件, /efs 则 USMT 将失败。 因此, /efs:copyraw 应使用 ScanState.exe 命令指定选项以迁移加密文件。 LoadState.exe运行命令时,会自动迁移加密文件和 EFS 证书。

例如:
ScanState.exe /i:MigDocs.xml /i:MigApp.xml \server\share\migration\mystore /efs:copyraw
重要提示
如果父文件夹已加密,则必须对所有文件进行加密。 如果删除了加密文件夹内文件的加密属性,则会在迁移过程中使用用于运行 LoadState 工具的帐户的凭据对该文件进行加密。 有关详细信息,请参阅 迁移 EFS 文件和证书

不兼容的命令行选项

下表指示哪些命令行选项与 ScanState.exe 命令不兼容。 如果特定组合的表条目具有 ✅,则这些选项是兼容的,并且可以一起使用。 符号 ❌ 表示选项不兼容。 例如, /nocompress 选项不能与 选项一起使用 /encrypt

Command-Line 选项 /keyfile /nocompress /genconfig /都
/我
/o
/v
/nocompress 不适用
/localonly
/钥匙
/加密 必填*
/keyfile 不适用
/l
/listfiles
/进展
/r
/w
/c
/p 不适用
/都
/用户界面
/ue
/uel
/efs<option>
/genconfig 不适用
/config
<StorePath>

注意

/key必须使用 选项指定 /encrypt/keyfile 选项。