Send-SmigServerData 和 Receive-SmigServerData cmdlet 会在 MigrationDataResult 对象列表中返回结果。每个 MigrationDataResult 对象都包含关于 cmdlet 所处理的数据或共享的信息、操作的结果、任何错误或警告消息以及其他相关信息。下表描述了 MigrationDataResult 对象的属性。
属性名称 | 类型 | 定义 |
ItemType | 枚举 | 已迁移项目的类型。值包括 File、Folder、Share 和 Encrypted File。 |
SourceLocation | 字符串 | 项目的源位置,显示为路径名。 |
DestinationLocation | 字符串 | 项目的目标位置,显示为路径名。 |
Success | 布尔型 | 如果迁移成功,则会显示值 True;否则,将显示 False。 |
Size | 整数 | 项目大小(以字节为单位)。 |
ErrorDetails | 列表 <MigrationResultDetails> | MigrationResultDetails 对象列表。 |
Error | 枚举 | 已发生错误的错误枚举。 |
WarningMessageList | 列表 <String> | 警告消息列表。 |
下表描述了 MigrationResultDetails 对象内 MigrationResult 对象和 MigrationDataResult 对象公用的对象属性。
属性名称 | 类型 | 定义 |
FeatureId | 字符串 | 与该项目相关的迁移设置的名称。值的示例包括 IPConfig 和 DNS。对于数据迁移,此属性为空。 |
Messages | 列表 <String> | 详细事件消息列表。 |
DetailCode | 整数 | 与每个事件消息关联的错误或警告代码。 |
Severity | 枚举 | 事件的严重性(如果事件已发生)。值的示例包括 Information、Error 和 Warning。 |
Title | 字符串 | 结果对象的标题。值的示例包括 IP 配置的 NIC 物理地址,或本地用户迁移的用户名。 |
示例
以下示例说明如何使用变量存储结果对象的列表,然后在迁移完成之后在查询中使用该变量返回结果对象的内容。
将结果对象的列表存储为查询的一个变量的步骤
若要运行 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 的结果对象的那些详细信息,该 ID 的消息严重性等于 Warning。
$ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Severity -eq "Warning") {$_} }
以下命令仅返回 ID 为 Local User 的结果对象的详细信息,该 ID 还具有标题 Remote Desktop Users。
$ImportResult | Where-Object { $_.ID -eq "Local Group" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Title -eq "Remote DesktopUsers") {$_} }