可以通过检查 SMS_StateMigration 类来跟踪Configuration Manager作系统迁移。
              StoreCreationDate、 StoreDeletionDate和 StoreReleaseDate 属性可用于标识迁移的当前状态。
跟踪状态迁移
- 设置与 SMS 提供程序的连接。 有关详细信息,请参阅 SMS 提供程序基础知识。 
- 获取 SMS_StateMigration的实例。 
- 使用 - StoreCreationDate、- StoreDeletionDate和- StoreReleaseDate属性计算当前迁移状态。
示例
以下示例方法枚举所有迁移,并确定它们是否正在进行中。
有关调用示例代码的信息,请参阅调用Configuration Manager代码片段。
Sub MigrationState(connection)
    Dim migrations
    Dim migration
    Dim inProgress
    Dim zeroTime
    zeroTime = "00000000000000.000000+***"
    Set migrations = connection.ExecQuery( "Select * From SMS_StateMigration")
    For Each migration in Migrations
        inProgress=False
        If migration.StoreCreationDate<>zeroTime Then
            If migration.StoreReleaseDate = zeroTime Then
                inProgress=True
            Else If migration.StoreDeletionDate = zeroTime Then
                inProgress = True
            Else
                inProgress = false
            End If
        End If
        Else
            inProgress=False
        End If
        WScript.StdOut.Write "Migration " + migration.MigrationID
        If inProgress = True Then
            Wscript.Echo " is in progress"
        Else
            WScript.Echo " is not in progress"
        End If
    Next
End Sub
public void MigrationState(WqlConnectionManager connection)
{
    try
    {
        IResultObject migrations =
            connection.QueryProcessor.ExecuteQuery("Select * from SMS_StateMigration");
        string zeroTime = "00000000000000.000000+***";
        foreach (IResultObject migration in migrations)
        {
            Boolean inProgress = false;
            if (migration["StoreCreationDate"].DateTimeValue.Equals(zeroTime) == false)
            {
                if (migration["StoreReleaseDate"].DateTimeValue.Equals(zeroTime) == true)
                {
                    inProgress = true;
                }
                else if (migration["StoreDeletionDate"].DateTimeValue.Equals(zeroTime) == true)
                {
                    inProgress = true;
                }
                else
                {
                    inProgress = false;
                }
            }
            else
            {
                inProgress = false;
            }
            Console.Write("Migration " + migration["MigrationID"].StringValue);
            if (inProgress)
            {
                Console.WriteLine(" is in progress");
            }
            else
            {
                Console.WriteLine(" is not in progress");
            }
        }
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed while displaying migration state: " + e.Message);
        throw;
    }
}
示例方法具有以下参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| connection | -管理: WqlConnectionManager- VBScript: SWbemServices | 与 SMS 提供程序的有效连接。 | 
编译代码
C# 示例具有以下编译要求:
命名空间
System
System.Collections.Generic
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
可靠编程
有关错误处理的详细信息,请参阅关于Configuration Manager错误。
.NET Framework 安全性
有关保护Configuration Manager应用程序的详细信息,请参阅Configuration Manager基于角色的管理。
另请参阅
对象概述如何使用托管代码在 Configuration Manager 中连接到 SMS 提供程序如何使用 WMI 连接到 Configuration Manager中的 SMS 提供程序关于 OS 部署计算机管理