Guide pratique pour gérer les erreurs synchrones de Configuration Manager à l’aide du code managé

Pour gérer une erreur Configuration Manager qui est déclenchée dans une requête synchrone, vous interceptez l’exception SmsQueryException . Étant donné que cette exception est également interceptée par SMS_Exception], vous pouvez l’intercepter et l’exception SmsConnectionException dans le même bloc catch.

Si l’exception interceptée dans un SMS_Exception est un SmsQueryException, vous pouvez l’utiliser pour accéder au sous-jacent __ExtendedException ou SMS_ExtendedException . Étant donné que la bibliothèque du fournisseur SMS managé n’encapsule pas ces exceptions, vous devez utiliser l’objet ManagementException de l’espace de noms System. Management pour y accéder.

Notes

Pour plus de clarté, la plupart des exemples de cette documentation renvoient simplement des exceptions. Vous pouvez les remplacer par l’exemple suivant si vous souhaitez obtenir des informations plus détaillées sur les exceptions.

Pour gérer une erreur de requête synchrone

  1. Écrivez du code pour accéder au fournisseur SMS.

  2. Utilisez l’exemple de code suivant pour intercepter les exceptions SmsQueryException et SmsConnectionException .

Exemple

La fonction exemple C# suivante tente d’ouvrir un package inexistant SMS_Package . Dans le gestionnaire d’exceptions, le code détermine le type d’erreur qui a été déclenché et affiche ses informations.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Calling Configuration Manager Code Snippets (Appel d’extraits de code Configuration Manager).

public void ExerciseException(WqlConnectionManager connection)  
{  
    try  
    {  

        IResultObject package = connection.GetInstance(@"SMS_Package.PackageID='UNKNOWN'");  
        Console.WriteLine("Package Name: " + package["Name"].StringValue);  
        Console.WriteLine("Package Description: " + package["Description"].StringValue);  

    }  
    catch (SmsException e)  
    {  
        if (e is SmsQueryException)  
        {  
            SmsQueryException queryException = (SmsQueryException)e;  
            Console.WriteLine(queryException.Message);  

            // Get either the __ExtendedStatus or SMS_ExtendedStatus object and display various properties.  
            ManagementException mgmtExcept = queryException.InnerException as ManagementException;  

            if (mgmtExcept != null)  
            {  
                if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "SMS_ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("Configuration Manager provider exception");  
                }  

                else if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "__ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("WMI exception");  
                }  
                Console.WriteLine(mgmtExcept.ErrorCode.ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ParameterInfo"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["Operation"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ProviderName"].ToString());  
            }  

        }  
        if (e is SmsConnectionException)  
        {  
            Console.WriteLine("There was a connection error :" + ((SmsConnectionException)e).Message);  
            Console.WriteLine(((SmsConnectionException)e).ErrorCode);  
        }  
    }  
}  

L’exemple de méthode a les paramètres suivants :

Paramètre Type Description
connection - WqlConnectionManager Connexion valide au fournisseur.

Compilation du code

Cet exemple C# requiert :

Espaces de noms

Système

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

System. Management

System.ComponentModel

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System. Management

Programmation fiable

Pour plus d’informations sur la gestion des erreurs, consultez À propos des erreurs de Configuration Manager.

Voir aussi

À propos des erreurs de gestion des Configuration Manager les erreurs asynchrones à l’aide du code managé