Compartilhar via


Como excluir uma função de ponto de migração de estado

Você exclui a função de ponto de migração de estado, em Configuration Manager, excluindo o objeto SMS_SCI_SysResUse Classe WMI do Servidor da função.

Para excluir uma função de ponto de migração de estado

  1. Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.

  2. Obtenha o objeto classe WMI do servidor SMS_SCI_SysResUse para a função de ponto de migração de estado.

  3. Defina o ponto de migração de estado correspondente como nenhum.

  4. Exclua o ponto de migração de estado SMS_SCI_SysResUse objeto Classe WMI do Servidor .

Exemplo

O método de exemplo a seguir exclui o ponto de migração de estado identificado pelo caminho NAL (código do site e camada de abstração de rede). O exemplo determina se o ponto de migração de estado tem alguma restauração de migração de estado incompleta em processo. Se houver alguma, a implementação atual ainda excluirá o ponto de migração de estado.

Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.

public void DeleteSmpRole(  
     WqlConnectionManager connection,  
     string siteCode,  
     string nalPath)  
 {  
     try  
     {  
         bool smpFound = false;  
         Console.WriteLine("About to delete the state migration point");  
         string query = string.Format(CultureInfo.InvariantCulture,  
      @"SELECT * from SMS_SCI_SysResUse where SiteCode='{0}' AND FileType=2 AND RoleName='{1}'AND NALPath='{2}'",  
      siteCode,  
      "SMS State Migration Point",  
      nalPath.Replace(@"\", @"\\"));  

         IResultObject resultObjs = connection.QueryProcessor.ExecuteQuery(query);  

         foreach (IResultObject resultObj in resultObjs)  
         {  
             smpFound = true;  
             if (DeleteSmpOK(resultObj) == true)  
             {  
                 resultObj.Delete();  
             }  

             Console.WriteLine("Deleted");  
         }  

         if (smpFound == false)  
         {  
             Console.WriteLine("No state migration point was found");  
         }  
     }  
     catch (SmsException e)  
     {  
         Console.WriteLine("Couldn't delete the state migration point: " + e.Message);  
         throw;  
     }  

 }  

public bool DeleteSmpOK(IResultObject selectedResultObject)  
{  
    IResultObject resultObjs = null;  
    try  
    {  
        // Locate this state migration point, and determine if it is in QuiesceState or not, normal deletion  
        // if it is not.  
        string query = string.Format(CultureInfo.InvariantCulture,  
        @"SELECT * from SMS_SCI_SysResUse where SiteCode='{0}' AND FileType=2 AND NALPath='{1}' AND RoleName='{2}'",  
        selectedResultObject["SiteCode"].StringValue,  
        selectedResultObject["NALPath"].StringValue.Replace(@"\", @"\\"),  
        "SMS State Migration Point");  

        resultObjs = selectedResultObject.ConnectionManager.QueryProcessor.ExecuteQuery(query);  

        // Retrieve the state migration point server name because there could be more than one state migration point on the site, and you want to  
        // determine if there are unrestored data stores on only this one.  
        string smpServer = selectedResultObject["NetworkOsPath"].StringValue;  
        smpServer = smpServer.Replace(@"\", "");  

        foreach (IResultObject resultObj in resultObjs)  
        {  
            if (resultObj.EmbeddedProperties.ContainsKey("SMPQuiesceState") == true &&  
                resultObj.EmbeddedProperties["SMPQuiesceState"].Properties["Value"].IntegerValue != 0)  
            {  
                // Find out whether this state migration point contains any stateMigrationRestores that are incomplete on this  
                // server that is to be deleted.  
                string query2 = string.Format(CultureInfo.InvariantCulture, @"SELECT * from SMS_StateMigration where StorePath Like '%{0}%'", smpServer);  

                IResultObject resultObjs2 = selectedResultObject.ConnectionManager.QueryProcessor.ExecuteQuery(query2);  

                foreach (IResultObject resultObj2 in resultObjs2)  
                {  
                    // Look for state migration objects without a StoreReleaseData/Migration date  
                    // it's the one that will cause an exception when reading releasetime because it is not a valid datetime.  
                    try  
                    {  
                        DateTime releaseTime = resultObj2["StoreReleaseDate"].DateTimeValue;  
                    }  
                    catch (ArgumentOutOfRangeException)  
                    {  
                        // Alternatively return false if you do not to delete.  
                        return true;  
                    }  
                }  
            }  
        }  
    }  
    catch (SmsQueryException ex)  
    {  
        Console.WriteLine("Failed during smp state determination" + ex.Message);  
        throw;  
    }  
    finally  
    {  
        if (resultObjs != null)  
        {  
            resultObjs.Dispose();  
        }  
    }  

    // Delete the role.  
    return true;  
}  

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection Gerenciado: WqlConnectionManager Uma conexão válida com o provedor de SMS.
siteCode Gerenciado: String O código do site Configuration Manager.
nalPath Gerenciado: String O caminho da NAL para o ponto de migração de estado. Por exemplo, ["Display=\\SERVERNAME\"]MSWNET:["SMS_SITE=SITECODE"]\\SERVERNAME\

Compilando o código

O exemplo C# tem os seguintes requisitos de compilação:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Globalization

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.

Confira também

Classe WMI do servidor SMS_SCI_SysResUse
Sobre a configuração de função do site de implantação do sistema operacionalComo ler e gravar no arquivo de controle de site Configuration Manager usando código gerenciado