관리 코드를 사용하여 Configuration Manager 동기 오류를 처리하는 방법
동기 쿼리에서 발생하는 Configuration Manager 오류를 처리하려면 SmsQueryException 예외를 catch합니다. 이 예외는 SMS_Exception]에서도 catch되므로 동일한 catch 블록에서 해당 예외와 SmsConnectionException 예외를 catch할 수 있습니다.
SMS_Exception catch된 예외가 SmsQueryException인 경우 이를 사용하여 기본 __ExtendedException
또는 SMS_ExtendedException
로 가져올 수 있습니다. 관리되는 SMS 공급자 라이브러리는 이러한 예외를 래핑하지 않으므로 System.Management 네임스페이스 ManagementException 개체를 사용하여 액세스해야 합니다.
참고
명확성을 위해 이 설명서의 대부분의 예제는 예외를 다시 throw하기만 하면 됩니다. 자세한 정보 예외 정보를 원하는 경우 다음 예제로 바꿀 수 있습니다.
동기 쿼리 오류를 처리하려면
SMS 공급자에 액세스하는 코드를 작성합니다.
다음 예제 코드를 사용하여 SmsQueryException 및 SmsConnectionException 예외를 catch합니다.
예시
다음 C# 예제 함수는 존재하지 SMS_Package
않는 패키지를 열려고 시도합니다. 예외 처리기에서 코드는 발생한 오류 유형을 결정하고 해당 정보를 표시합니다.
샘플 코드 호출에 대한 자세한 내용은 코드 조각 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);
}
}
}
예제 메서드에는 다음 매개 변수가 있습니다.
매개 변수 | 형식 | 설명 |
---|---|---|
connection |
- WqlConnectionManager |
공급자에 대한 유효한 연결입니다. |
코드 컴파일
이 C# 예제에는 다음이 필요합니다.
네임 스페이스
시스템
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
어셈블리
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
강력한 프로그래밍
오류 처리에 대한 자세한 내용은 Configuration Manager 오류 정보를 참조하세요.