文章来源:http://technet.microsoft.com/zh-cn/library/dd379531 若要转载,请标明文章来源
本地用户和组迁移指南
更新时间: 2010年2月
应用到: Windows Server 2008 R2
本地用户和组迁移是 Windows Server 迁移工具支持的数据和共享迁移过程的一部分。管理员可以使用 Windows Server 迁移工具 将服务器角色、功能、共享、操作系统设置和其他数据迁移到运行 Windows Server® 2008 R2 的计算机。
本指南包含的内容
支持的操作系统
下表列出了 Windows Server 迁移工具所支持的 Windows Server 操作系统。
源服务器处理器 | 源服务器操作系统 | 目标服务器操作系统 | 目标服务器处理器 |
---|---|---|---|
基于 x86 或基于 x64 | Windows Server 2003 Service Pack 2 | Windows Server 2008 R2,完整安装选项和服务器核心安装选项 | 基于 x64 |
基于 x86 或基于 x64 | Windows Server 2003 R2 | Windows Server 2008 R2,完整安装选项和服务器核心安装选项 | 基于 x64 |
基于 x86 或基于 x64 | Windows Server 2008 的完全安装选项 | Windows Server 2008 R2,完整安装选项和服务器核心安装选项 | 基于 x64 |
基于 x64 | Windows Server 2008 R2,完整安装选项和服务器核心安装选项 | Windows Server 2008 R2,完整安装选项和服务器核心安装选项 | 基于 x64 |
显示在上表中的操作系统版本是所支持的操作系统和 Service Pack 的最旧组合。支持较新的 Service Pack(如果有)。
支持将 Foundation、Standard、Enterprise 和 Datacenter 版本的 Windows Server 作为源服务器或目标服务器。
支持在物理操作系统和虚拟操作系统之间迁移。
不支持从源服务器到使用一种与源服务器不同的系统 UI 语言(即已安装语言)运行某个操作系统的目标服务器的迁移。例如,无法使用 Windows Server 迁移工具从正使用法语系统 UI 语言运行 Windows Server 2008 的计算机将角色、操作系统设置、数据或共享迁移到正使用德语系统 UI 语言运行 Windows Server 2008 R2 的计算机。
![]() |
---|
系统 UI 语言是用于设置 Windows 操作系统的本地化安装程序包的语言。
|
Windows Server 2003 和 Windows Server 2008 R2 支持基于 x86 和基于 x64 的迁移。Windows Server 2008 R2 的所有版本都是基于 x64 的。
无法迁移 Windows Server 2008 的服务器核心安装上运行的角色,因为 Windows Server 2008 的服务器核心安装上没有可用的 .NET Framework。
支持的属性
- “用户属性”对话框的“常规”选项卡上的下列本地用户帐户属性是在没有更改的情况下从源服务器迁移的。
- 名称
- 全名
- 名称
- 下列本地用户帐户属性在迁移期间发生更改。
- “用户下次登录时须更改密码”在目标计算机上始终启用。
- “安全 ID”已映射到目标服务器上的新值。
- “用户下次登录时须更改密码”在目标计算机上始终启用。
- 下列本地组帐户属性已迁移。
- 名称
- 描述
- “成员身份”(包括本地用户、其他本地组、域用户和域组的成员)
- 名称
- 下列本地组帐户属性在迁移期间发生更改。
- “安全 ID”已映射到目标服务器上的新值。
- “安全 ID”已映射到目标服务器上的新值。
不支持的属性
不支持迁移下列用户帐户属性或方案。
- 用户密码。用户首次登录目标服务器时系统会提示其设置新密码。
- 正在覆盖在目标服务器上具有与源服务器上相同名称的现有用户或组的属性
- “帐户已禁用”。出于安全原因,所有迁移的用户帐户在迁移之后都会在源服务器上禁用。
- 不支持“用户属性”对话框的“常规”选项卡上的下列属性。
- 用户不能更改密码
- 描述
- 帐户已锁定
- 用户不能更改密码
- 不支持其他选项卡上的属性。
- “配置文件”选项卡
- “环境”选项卡
- “会话”选项卡
- “远程控制”选项卡
- “终端服务配置文件”选项卡
- “拨入”选项卡
- “配置文件”选项卡
在源服务器和目标服务器上执行迁移所需的用户权限
需要具有对源服务器和目标服务器的本地管理员权限才能在源服务器和目标服务器上安装 Windows Server 迁移工具。
准备目标服务器
按照 Microsoft 网站上的 Windows Server 迁移工具安装、访问和删除(可能为英文网页)指南中的下列过程安装 Windows Server 迁移工具。
验证目标服务器在导入操作期间是否可以解析属于本地组的域用户的名称。如果源和目标服务器位于不同域中,目标服务器必须能够联系源域用户帐户所在的林的全局编录服务器。
准备源服务器
按照 Microsoft 网站上的 Windows Server 迁移工具安装、访问和删除(可能为英文网页)指南中的下列过程安装 Windows Server 迁移工具。安装指南中包含将 Windows Server 迁移工具部署到运行 Windows Server 2003 或 Windows Server 2008 的源服务器的更多详细步骤。
![]() |
---|
运行 Import-SmigServerSetting、Export-SmigServerSetting 或 Get-SmigServerFeature cmdlet 之前,请验证在迁移期间源服务器和目标服务器是否可以访问特定域控制器,该域控制器与作为源服务器上本地组成员的域用户或组关联。 运行 Send-SmigServerData 或 Receive-SmigServerData cmdlet 之前,请验证在迁移期间源服务器和目标服务器是否可以访问特定域控制器,该域控制器与对所迁移的文件或共享拥有权限的那些域用户关联。
|
迁移本地用户和组
用于迁移本地用户和组数据的 Windows Server 迁移工具 cmdlet 在源服务器上为 Export-SmigServerSetting,在目标服务器上为 Import-SmigServerSetting。
在源服务器上,Export-SmigServerSetting cmdlet 使您可以将所有本地用户导出到迁移存储,即,您在 cmdlet 中指定的位置。还可以在同一 cmdlet 或其他命令实例中导出所有本地组。
![]() |
---|
Windows Server 迁移工具不允许对现有迁移存储进行添加。若要将本地用户和组数据均迁移到同一迁移存储,请在单个命令实例中将其导出。否则,必须通过两次迁移将用户和组迁移到不同的迁移存储。
|
在目标服务器上,Import-SmigServerSetting cmdlet 使您可以将所有本地用户从迁移存储(即,您在 cmdlet 中指定的位置)导入。还可以在同一 cmdlet 或其他命令实例中导入所有本地组。
若要获取有关任何 Windows Server 迁移工具 cmdlet 的详细帮助,请在 Windows PowerShell 会话中键入 Get-Help <cmdlet_name> -full,其中 cmdlet_name 代表需要有关其帮助的 Windows Server 迁移工具 cmdlet 的名称。
如本指南中的步骤所述,将 -Verbose 参数添加到 Windows PowerShell cmdlet,以查看有关该操作的详细信息。
本地用户和组的迁移过程
完成本节中的过程以迁移本地用户和组。
![]() |
---|
如果源服务器是一个域成员服务器,而目标服务器是一个域控制器,则导入的本地用户将提升为域用户,且导入的本地组将成为目标服务器上的域本地组。 如果源服务器是域控制器,但目标服务器不是域控制器,则将域本地组作为本地组迁移,将域用户作为本地用户迁移。
|
从源服务器导出本地用户和组的步骤
-
在源服务器上,执行以下操作之一。
- 在运行 Windows Server 2003 的计算机上,通过依次单击“开始”、“所有程序”,打开 Windows PowerShell 文件夹,然后单击 Windows PowerShell 快捷方式,从而打开 Windows PowerShell 会话。
- 在运行 Windows Server 2008 的计算机上,使用提升的用户权限打开 Windows PowerShell 会话。若要完成此操作,请依次单击“开始”、“所有程序”,打开 Windows PowerShell 文件夹,右键单击 Windows PowerShell,然后单击“以管理员身份运行”。
- 在运行 Windows Server 2008 R2 的计算机上,使用提升的用户权限打开 Windows Server 迁移工具自定义 Windows PowerShell 会话。若要完成此操作,请依次单击“开始”、“管理工具”、“Windows Server 迁移工具”,右键单击“Windows Server 迁移工具”快捷方式,然后单击“以管理员身份运行”。
- 在运行 Windows Server 2003 的计算机上,通过依次单击“开始”、“所有程序”,打开 Windows PowerShell 文件夹,然后单击 Windows PowerShell 快捷方式,从而打开 Windows PowerShell 会话。
-
如果已使用「开始」菜单上的 Windows Server 迁移工具快捷方式打开当前 Windows PowerShell 会话,请跳过此步骤转到下一步。仅将 Windows Server 迁移工具管理单元加载到已使用其他一些方法打开且尚未加载该管理单元的某个 Windows PowerShell 会话。
将 Windows Server 迁移工具加载到 Windows PowerShell 会话。若要加载 Windows Server 迁移工具,请键入以下内容,然后按 Enter。
Add-PSSnapin Microsoft.Windows.ServerManager.Migration
-
将本地用户和组导出到迁移存储。请键入以下命令,然后按 Enter,其中 MigrationStorePath 代表要存储迁移数据的位置的路径。
Export-SmigServerSetting -User <Enabled | Disabled | All> -Group -Path <MigrationStorePath> -Verbose
如前面的 cmdlet 所示,将下列值之一与 –User 参数一起使用。
- Enabled 仅导出已启用的本地用户
- Disabled 仅导出已禁用的本地用户
- All 导出已启用和已禁用的本地用户
- Enabled 仅导出已启用的本地用户
![]() |
---|
系统会提示您输入密码以加密迁移存储。请记下此密码,因为从目标服务器上的迁移存储导入数据时必须提供相同的密码。 如果路径不是目标服务器能够访问的共享位置,则必须手动将迁移存储复制到目标服务器,或复制到该目标服务器在运行 Import-SmigServerSetting cmdlet 时可以访问的位置。
|
将本地用户和组导入目标服务器的步骤
-
请执行以下操作之一。
- 使用提升的用户权限打开 Windows Server 迁移工具自定义 Windows PowerShell 会话。若要完成此操作,请依次单击“开始”、“管理工具”、“Windows Server 迁移工具”,右键单击“Windows Server 迁移工具”快捷方式,然后单击“以管理员身份运行”。
- 在目标服务器上,使用提升的用户权限打开 Windows PowerShell 会话。若要完成此操作,请依次单击「开始」、“所有程序”、“附件”,打开 Windows PowerShell 文件夹,右键单击 Windows PowerShell,然后单击“以管理员身份运行”。
- 使用提升的用户权限打开 Windows Server 迁移工具自定义 Windows PowerShell 会话。若要完成此操作,请依次单击“开始”、“管理工具”、“Windows Server 迁移工具”,右键单击“Windows Server 迁移工具”快捷方式,然后单击“以管理员身份运行”。
-
如果已使用「开始」菜单上的 Windows Server 迁移工具快捷方式打开当前 Windows PowerShell 会话,请跳过此步骤转到下一步。仅将 Windows Server 迁移工具管理单元加载到已使用其他一些方法打开且尚未加载该管理单元的某个 Windows PowerShell 会话。
将 Windows Server 迁移工具加载到 Windows PowerShell 会话。若要加载 Windows Server 迁移工具,请键入以下内容,然后按 Enter。
Add-PSSnapin Microsoft.Windows.ServerManager.Migration
-
从在从源服务器导出本地用户和组的步骤中创建的迁移存储中导入本地用户和组。请键入以下命令,然后按 Enter,其中 MigrationStorePath 代表要从中导入迁移数据的位置的路径。
Import-SmigServerSetting -User <Enabled | Disabled | All> -Group -Path <MigrationStorePath> -Verbose
如前面的 cmdlet 所示,将下列值之一与 -User 参数一起使用。
- Enabled 仅导入已启用的本地用户
- Disabled 仅导入已禁用的本地用户
- All 导入已启用和已禁用的本地用户
- Enabled 仅导入已启用的本地用户
![]() |
---|
输入 Import-SmigServerSetting cmdlet 之后,系统会提示您提供相同的密码以解密在导出过程中创建的迁移存储。 若要在两个单独的迁移操作中导入本地用户和组,必须首先导入本地用户,然后导入本地组,以正确导入本地用户的成员身份。
|
验证迁移
通过将源服务器和目标服务器上的“本地用户和组”Microsoft 管理控制台 (MMC) 管理单元中显示的用户和组列表进行对比,验证希望迁移的所有本地用户和组是否存在于目标服务器上。若要打开“本地用户和组”管理单元,请执行以下操作。
打开“本地用户和组”管理单元的步骤
-
依次单击“开始”、“运行”,在“打开”文本框中键入 lusrmgr.msc,然后单击“确定”或按 Enter。
还可以使用 net 命令将源服务器与目标服务器上显示的用户和组列表进行对比。
使用 net 命令获取用户和组列表的步骤
-
在源计算机或目标计算机上,打开命令提示符窗口。依次单击“开始”、“运行”,键入 cmd,然后按 Enter。
-
通过键入下面的命令,然后按 Enter 将所有本地用户的列表导出到文本文件。
net user > localusers.txt
-
通过键入下面的命令,然后按 Enter 将所有本地组的列表导出到文本文件。
net localgroup > localgroups.txt
-
确保将结果文本文件保存到方便的位置。
基于 cmdlet 的迁移的疑难解答
Windows Server 迁移工具部署日志文件位于 %windir%\Logs\SmigDeploy.log。其他 Windows Server 迁移工具日志文件在下列位置创建。
- %windir%\Logs\ServerMigration.log
- 在 Windows Server 2008 和 Windows Server 2008 R2 上:%localappdata%\SvrMig\Log
- 在 Windows Server 2003 上:%userprofile%\Local Settings\Application Data\SvrMig\Log
如果无法在上述位置创建迁移日志文件,则将在 %temp% 中创建 ServerMigration.log 和 SmigDeploy.log,并在 %windir%\System32 中创建其他日志。
如果某个迁移 cmdlet 失败并且 Windows PowerShell 会话意外关闭且显示访问冲突的错误消息,请在 %localappdata%\SvrMig\Logs\setuperr.log 文件中查找类似于以下示例的一条消息。
FatalError [0x090001] PANTHR Exception (code 0xC0000005: ACCESS_VIOLATION) occurred at 0x000007FEEDE9E050 in C:\Windows\system32\migwiz\unbcl.dll (+000000000008E050). Minidump attached (317793 bytes).
当服务器无法访问特定域控制器(这些域控制器与作为本地组成员或对所迁移文件或共享拥有权限的域用户或组关联)时,会发生此错误。 发生这种情况时,每个域用户或组在 GUI 中都显示为无法解析的安全标识符 (SID)。 S-1-5-21-1579938362-1064596589-3161144252-1006 就是一个 SID 示例。
为了防止出现此问题,请验证所需的域控制器或全局编录服务器是否正在运行,以及网络连接是否允许在源和目标服务器与所需的域控制器或全局编录服务器之间进行通信。然后,再次运行这些 cmdlet。
如果无法还原源或目标服务器与域控制器或全局编录服务器之间的连接,请执行以下操作。
-
再次运行 Export-SmigServerSetting、Import-SmigServerSetting 或 Get-SmigServerFeature 之前,先从运行 cmdlet 的服务器上删除作为本地组成员的所有无法解析的域用户或组。
-
再次运行 Send-SmigServerData 或 Receive-SmigServerData 之前,先删除对迁移源服务器上的文件、文件夹或共享拥有用户权限的所有无法解析的域用户或组。
查看 Windows Server 迁移工具结果对象的内容
所有 Windows Server 迁移工具 cmdlet 都以对象形式返回结果。可以保存结果对象并查询它们,以获取关于已迁移的设置和数据的详细信息。对于其他 Windows PowerShell 命令和脚本,还可以使用结果对象作为输入。
结果对象描述
Windows Server 迁移工具 Import-SmigServerSetting 和 Export-SmigServerSetting cmdlet 以 MigrationResult 对象列表的形式返回结果。 每个 MigrationResult 对象都包含有关 cmdlet 所处理的数据或设置的信息、操作的结果以及任何相关的错误或警告消息。 下表描述了 MigrationResult 对象的属性。
属性名 | 类型 | 定义 |
---|---|---|
ItemType | 枚举 | 正在迁移的项目的类型。 值包括 General、WindowsFeatureInstallation、WindowsFeature 和 OSSetting。 |
ID | String | 已迁移项目的 ID。 值的示例包括 Local User、Local Group 和 DHCP。 |
Success | 布尔 | 如果迁移成功,则显示值 True;否则,显示 False。 |
DetailsList | 列表 <MigrationResultDetails> | MigrationResultDetails 对象列表。 |
Send-SmigServerData 和 Receive-SmigServerData cmdlet 以 MigrationDataResult 对象列表的形式返回结果。 每个 MigrationDataResult 对象都包含有关 cmdlet 所处理的数据或共享的信息、操作的结果、任何错误或警告消息以及其他相关信息。 下表描述了 MigrationDataResult 对象的属性。
属性名 | 类型 | 定义 |
---|---|---|
ItemType | 枚举 | 已迁移项目的类型。 值包括 File、Folder、Share 和 Encrypted File。 |
SourceLocation | String | 项目的源位置,显示为路径。 |
DestinationLocation | String | 项目的目标位置,显示为路径。 |
Success | 布尔 | 如果迁移成功,则显示值 True;否则,显示 False。 |
Size | 整数 | 项目大小(以字节为单位)。 |
ErrorDetails | 列表 <MigrationResultDetails> | MigrationResultDetails 对象列表。 |
Error | 枚举 | 已发生错误的错误枚举。 |
WarningMessageList | 列表 <String> | 警告消息列表。 |
下表描述了 MigrationResultDetails 对象内 MigrationResult 对象和 MigrationDataResult 对象共有的对象属性。
属性名 | 类型 | 定义 |
---|---|---|
FeatureId | String | 与该项目相关的迁移设置的名称。 值的示例包括 IPConfig 和 DNS。对于数据迁移,此属性为空。 |
Messages | 列表 <String> | 详细事件消息列表。 |
DetailCode | 整数 | 与每个事件消息关联的错误或警告代码。 |
Severity | 枚举 | 事件的严重性(如果事件已发生)。 值的示例包括 Information、Error 和 Warning。 |
Title | String | 结果对象的标题。值的示例包括 IP 配置的网络适配器物理地址,或本地用户迁移的用户名。 |
示例
以下示例显示如何将结果对象列表存储在变量中,然后在迁移完成后,使用该变量查询,以返回结果对象的内容。
将结果对象列表存储为查询变量的步骤
-
若要运行 cmdlet 并将结果保存在变量中,请使用以下格式键入一个命令,然后按 Enter。
$VariableName = $(Cmdlet)
以下是一个示例。
$ImportResult = $(Import-SmigServerSetting -FeatureId DHCP -User all -Group -Path D:\rmt\DemoStore -force -Verbose)
此命令会运行具有多个指定参数的 Import-SmigServerSetting cmdlet,然后在变量 ImportResult 中保存结果对象。
-
Import-SmigServerSetting cmdlet 完成其操作后,通过键入以下格式的命令,然后按 Enter 返回包含在结果对象中的信息。
$VariableName
在以下示例中,变量命名为 ImportResult。
$ImportResult
此命令会返回结果对象中所包含的信息,这些结果对象由步骤 1 所示示例中的 Import-SmigServerSetting 返回。以下是通过调用 ImportResult 变量显示的一个输出示例。
ItemType ID Success DetailsList -------- -- ------- ----------- OSSetting Local User True {Local User, Loc... OSSetting Local Group True {Local Group, Lo... WindowsFeature DHCP True {}
上述示例的每一行都是通过使用 Import-SmigServerSetting cmdlet 迁移的某项的一个迁移结果。 列标题名称是 MigrationResult 对象的属性。可以将这些属性合并到另一个命令中来返回关于结果对象的更多详细信息,如步骤 3 及以后步骤中的示例所示。
-
若要在列表中显示所有结果对象的某个特定属性,请使用以下格式键入一个命令,然后按 Enter。
$<VariableName>| Select-Object -ExpandProperty <PropertyName>
以下是一个示例。
$importResult | Select-Object -ExpandProperty DetailsList
-
可以通过使用 Windows PowerShell cmdlet 运行更多高级查询来分析结果对象。以下是一些示例。
- 以下命令仅返回 ID 为 Local User 的结果对象的详细信息。
$ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList
- 以下命令仅返回 ID 为 Local User 且消息严重性等于 Warning 的结果对象的详细信息。
$ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Severity -eq "Warning") {$_} }
- 以下命令仅返回 ID 为 Local Group 且标题为 Remote Desktop Users 的结果对象的详细信息。
$ImportResult | Where-Object { $_.ID -eq "Local Group" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Title -eq "Remote DesktopUsers") {$_} }
- 以下命令仅返回 ID 为 Local User 的结果对象的详细信息。
有关查询结果的详细信息
有关在上述示例中使用的 cmdlet 的详细信息,请参阅以下附加资源。
- Microsoft 脚本中心网站上的 Where-Object (http://go.microsoft.com/fwlink/?LinkId=134853)(可能为英文网页)。
- Microsoft 脚本中心网站上的 Select-Object (http://go.microsoft.com/fwlink/?LinkId=134858)(可能为英文网页)。
- Microsoft 脚本中心网站上的 ForEach-Object (http://www.microsoft.com/technet/scriptcenter/topics/msh/cmdlets/foreach-object.mspx)(可能为英文网页)
有关 Windows PowerShell 脚本技术的详细信息,请参阅 Microsoft 脚本中心网站上的 Windows PowerShell 可以用来做什么?- 脚本技术 (http://go.microsoft.com/fwlink/?LinkId=134862)(可能为英文网页)。