Como ler e gravar no arquivo de controle de site Configuration Manager usando código gerenciado
Para gravar no arquivo de controle de site Configuration Manager usando o Provedor de SMS gerenciado, você obtém o arquivo de definição do site consultando o recurso ou componente necessário. Em seguida, atualize a propriedade inserida, a lista de propriedades inseridas ou a lista de várias cadeias de caracteres conforme necessário.
Observação
Você também pode usar o GetInstance do gerenciador de conexões para obter o recurso ou componente necessário.
O Configuration Manager gerenciado gerencia a sessão de conexão com o arquivo de controle do site automaticamente para você. Portanto, você trata os objetos IResultObject retornados da consulta da mesma forma que trata objetos IResultObject recuperados do Provedor de SMS.
Para ler e gravar no arquivo de controle do site
Configure uma conexão com o Provedor de SMS. Para obter mais informações, consulte Como se conectar a um provedor de SMS em Configuration Manager usando código gerenciado.
Use o método ExecQuery ou GetInstance do objeto QueryProcessor Gerenciador de Conexões para obter o recurso de arquivo de controle de site ou o objeto IResultObject necessário.
Usando o IResultObject , atualize o arquivo de controle do site.
Use o método Put do objeto IResultObject para confirmar as alterações.
Exemplo
O exemplo C# a seguir acessa o componente do agente cliente do arquivo de controle do site e cria uma propriedade fictícia, uma lista de propriedades e uma lista de várias cadeias de caracteres. Em seguida, ele remove as atualizações que foram feitas. O exemplo demonstra como consultar o arquivo de controle do site, fazer atualizações e confirmar alterações no arquivo de controle do site.
Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.
public void ReadWriteSCF(WqlConnectionManager connection,string siteCode)
{
try
{
// Query for the site's site control file client agent settings.
IResultObject resources =
connection.QueryProcessor.ExecuteQuery
("SELECT * FROM SMS_SCI_ClientComp WHERE ClientComponentName = 'Client Agent' AND SiteCode = '" +
siteCode + "'");
foreach (IResultObject resource in resources)
{
// Embedded Properties
Console.WriteLine("Embedded property");
Console.WriteLine("-----------------");
int value = 0;
string value1 = "";
string value2 = "";
// Write a dummy embedded property.
this.WriteScfEmbeddedProperty(resource, "Test", 10, "Hello", "World");
// Get the embedded property back and display the values.
if (this.GetScfEmbeddedProperty(resource, "Test", ref value, ref value1, ref value2))
{
Console.WriteLine("Value: " + value);
Console.WriteLine("Value1: " + value1);
Console.WriteLine("Value2: " + value2);
// Remove the dummy embedded property.
Dictionary<string, IResultObject> EmbeddedProperties = resource.EmbeddedProperties;
EmbeddedProperties.Remove("Test");
resource.EmbeddedProperties = EmbeddedProperties;
resource.Put();
// See if the dummy embedded property is still there.
if (this.GetScfEmbeddedProperty(resource, "Test", ref value, ref value1, ref value2))
{
Console.WriteLine("Test exists");
}
else
{
Console.WriteLine("Test does not exist");
}
}
else
{
Console.WriteLine("Property not found");
}
Console.WriteLine();
// Embedded property list.
Console.WriteLine("Embedded property list");
Console.WriteLine("----------------------");
// values contains the embedded property list.
ArrayList values = new ArrayList();
values.Add("Elephant");
values.Add("Giraffe");
// Write to the resource.
this.WriteScfEmbeddedPropertyList(resource, "Animals", values);
ArrayList retrievedValues;
// Get the embedded property list and display.
if (this.GetScfEmbeddedPropertyList(resource, "Animals", out retrievedValues))
{
foreach (string retrievedValue in retrievedValues)
{
Console.WriteLine(retrievedValue);
}
// Remove one of the entries.
retrievedValues.Remove("Elephant");
Console.WriteLine();
// Update the list.
this.WriteScfEmbeddedPropertyList(resource, "Animals", retrievedValues);
// Display the list again.
this.GetScfEmbeddedPropertyList(resource, "Animals", out retrievedValues);
foreach (string retrievedValue in retrievedValues)
{
Console.WriteLine(retrievedValue);
}
}
else
{
Console.WriteLine("None");
}
Console.WriteLine();
// RegMultiStringList.
Console.WriteLine("RegMultiStringList");
Console.WriteLine("------------------");
// valuesStrings is the RegMultiString List.
ArrayList valueStrings = new ArrayList();
valueStrings.Add("Tom");
valueStrings.Add("Harry");
this.WriteScfRegMultiStringList(resource, "Names", valueStrings);
ArrayList retrievedValuesStrings;
if (this.GetScfRegMultiStringList(resource, "Names", out retrievedValuesStrings))
{
foreach (string retrievedValue in retrievedValuesStrings)
{
Console.WriteLine(retrievedValue);
}
// Remove one of the entries.
retrievedValuesStrings.Remove("Tom");
Console.WriteLine();
// Update the list.
this.WriteScfRegMultiStringList(resource, "Names", retrievedValuesStrings);
// Display the list again.
this.GetScfRegMultiStringList(resource, "Names", out retrievedValuesStrings);
foreach (string retrievedValue in retrievedValuesStrings)
{
Console.WriteLine(retrievedValue);
}
}
else
{
Console.WriteLine("None");
}
}
}
catch (SmsException e)
{
Console.WriteLine("Failed: " + e.Message);
throw;
}
}
O método de exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
---|---|---|
connection |
- WqlConnectionManager |
Uma conexão válida com o provedor de SMS. |
siteCode |
- String |
O código do site do site Configuration Manager. |
Compilando o código
Namespaces
System
System.Collections.Generic
System.Collections
System.ComponentModel
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programação robusta
As exceções Configuration Manager que podem ser geradas são SmsConnectionException e SmsQueryException. Elas podem ser capturadas junto com SmsException.
Confira também
Fundamentos do Provedor de SMSsobre o arquivo de controle de site Configuration Manager
Como se conectar a um provedor de Configuration Manager usando código gerenciado
Como ler uma lista de propriedades integradas de arquivo de controle de site Configuration Manager
Visão geral de objetos