前言
以下知识来自,我实际经验总结,官网文档不会这样讲.
如有遗漏或错误,请指正.
如有新的想法,请评论,我将添加到此文,并以您的昵称为来源标注在文中.
自定义XML语法
基础
语法:
txt
path\ [filename]
例如:
txt
%SYSTEMROOT%\MyVideo\ [邓文怡和老师.mp4]
这会迁移或排除C:\\MyVideo\邓文怡和老师.mp4
,迁移或排除取决于上级标签.
通配符
path
支持通配符*
语法:
txt
path\* [filename]
例如:
txt
%SYSTEMROOT%\MyVideo\* [邓文怡和老师.mp4]
这会迁移或排除 C:\\MyVideo\
文件夹里面的任何邓文怡和老师.mp4
文件,包括子目录中的文件.
[]也支持通配符
一旦path
和[]
的通配符联合起来使用,这就有趣了.
语法:
txt
path\* [*]
例如:
txt
%SYSTEMROOT%\MyVideo\* [*]
这会迁移或排除C:\\MyVideo\
文件夹里面的任何目录和任何文件,当然包括子目录.
[*]通配符还有一种用法
txt
path\* [*.mp4]
例如:
txt
%SYSTEMROOT%\MyVideo\* [*.mp4]
这会迁移或排除C:\\MyVideo\
文件夹里面的,任何包含.mp4
文件的目录和任何.mp4
文件,当然包括子目录中的文件.
迁移注册表
语法:
txt
path\ [item]
例如:
txt
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ [Path]
这会迁移或排除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\
的项目Path
总体上,和文件的操作的语法差不多,其他的不再描述.
默认会迁移除系统盘外的其他磁盘
如果你想屏蔽D盘,可以使用如下xml:
⚠️注意,D盘很有可能是对于源计算机系统上的盘符.
也就是说,在源计算机上它叫做D盘,虽然在目标计算机上不是.
特别是针对脱机迁移(你无法查看源计算机上盘符的情况下),你应该在执行ScanState.exe
生成迁移储存USMT.MIG
时,添加/listfiles
参数将被迁移的文件路径输出到文本文件中,里面带有盘符,你可以检查.
xml
<?xml version='1.0' encoding='utf-8'?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/unconditionalExcludeDrive">
<component type="Documents" context="System">
<displayName>File Migration</displayName>
<role role="Data">
<rules context="System">
<unconditionalExclude>
<objectSet>
<pattern type="File">D:\*[*]</pattern>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
由于D盘的不确定性,我的目的是排除大文件,我使用了如下xml排除任何驱动器下的文件.
xml
<?xml version='1.0' encoding='utf-8'?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/unconditionalExcludeFile">
<component type="Documents" context="System">
<displayName>File Migration</displayName>
<role role="Data">
<rules context="System">
<unconditionalExclude>
<objectSet>
<script>MigXmlHelper.GenerateDrivePatterns("* [Win11SystemNotDeleteOrEdit.vhdx]", "Fixed")</script>
<script>MigXmlHelper.GenerateDrivePatterns("* [Win11SystemNotDeleteOrEdit1.vhdx]", "Fixed")</script>
</objectSet>
</unconditionalExclude>
</rules>
</role>
</component>
</migration>
尽可能的使用环境变量
你想象中的Windows环境变量不一定会在xml文件中生效,你应该依据此列表.
https://learn.microsoft.com/zh-cn/windows/deployment/usmt/usmt-recognized-environment-variables
利用MigXML.xsd对xml语法验证
你可以在vscode中实现它.
- 安装插件
XML
由RedHat.com开发的. - 在xml头部添加
xmlns:xsi
xsi:noNamespaceSchemaLocation
如下所示:
⚠️xsi:noNamespaceSchemaLocation
填写的是MigXML.xsd
文件路径,确保可访问.
xml
<?xml version="1.0" encoding="UTF-8"?>
<migration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="MigXML.xsd"
urlid="http://www.microsoft.com/migration/1.0/migxmlext/reg">
......
</migration>