Compartilhar via


Como criar uma variável de computador no Configuration Manager

Você cria uma variável de computador para um computador que está executando Configuration Manager adicionando instâncias de SMS_MachineVariable à propriedade de matriz de classe MachineVariables SMS_MachineSettings.

Para criar uma variável de computador

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

  2. Obter uma instância de SMS_MachineSettings.

  3. Para que cada variável seja adicionada, adicione instâncias do objeto inserido a SMS_MachineVariable à propriedade array MachineVariables .

  4. Confirme as alterações na instância de SMS_MachineSettings classe.

Exemplo

O método de exemplo a seguir cria uma variável de coleção e adiciona-a à coleção identificada pelo identificador fornecido.

No exemplo, a LocaleID propriedade é codificada em código para inglês (EUA). Se você precisar da localidade para não-EUA. instalações, você pode obtê-lo na propriedade classe LocaleIDWMI do servidor SMS_Identification.

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

Sub CreateComputerVariable(connection, siteCode, name, value, mask, computerId)  

    Dim computerSettings  
    Dim computerVariables  
    Dim computerVariable  
    Dim Settings  

    ' See if the computer settings object already exists. if it does not, create it.  
    Set settings = connection.ExecQuery _  
      ("Select * From SMS_MachineSettings Where ResourceID = '" & computerID & "'")  

    If settings.Count = 0 Then  
        Wscript.Echo "Creating computer settings object"  
        Set computerSettings = connection.Get("SMS_MachineSettings").SpawnInstance_  
        computerSettings.ResourceID = computerId  
        computerSettings.SourceSite = siteCode  
        computerSettings.LocaleID = 1033  
        computerSettings.Put_  
    End If    

    ' Get the computer settings object.  
    Set computerSettings = connection.Get("SMS_MachineSettings.ResourceID='" & computerId &"'" )  

    ' Get the computer variables.  
    computerVariables=computerSettings.MachineVariables  

    ' Create and populate a new computer variable.  
    Set computerVariable = connection.Get("SMS_MachineVariable").SpawnInstance_  
    computerVariable.Name = name  
    computerVariable.Value = value  
    computerVariable.IsMasked = mask  

    ' Add the new computer variable.  
    ReDim Preserve computerVariables (UBound (computerVariables)+1)  
    Set computerVariables(UBound(computerVariables)) = computerVariable  

    computerSettings.MachineVariables=computerVariables  

    computerSettings.Put_  

 End Sub     
public void CreateComputerVariable(  
    WqlConnectionManager connection,  
    string siteCode,   
    string name,   
    string value,   
    bool mask,   
    int computerId)  
{  
    try  
    {  
        // Get the computer settings.  
        IResultObject computerSettings=null;  

        IResultObject computerSettingsQuery = connection.QueryProcessor.ExecuteQuery(  
            "Select * from SMS_MachineSettings where ResourceId = '" + computerId + "'");  

        foreach (IResultObject settings in computerSettingsQuery)  
        {  
            computerSettings = settings;  
        }  

        if (computerSettings == null) // It does not exist, so create it.  
        {  
            computerSettings = connection.CreateInstance(@"SMS_MachineSettings");  
            computerSettings["ResourceID"].IntegerValue = computerId;  
            computerSettings["SourceSite"].StringValue = siteCode;  
            computerSettings["LocaleID"].IntegerValue = 1033;  
            computerSettings.Put();  
            computerSettings.Get();  
        }  

        // Create the computer variable.  
        List<IResultObject> computerVariables = computerSettings.GetArrayItems("MachineVariables");  
        IResultObject computerVariable = connection.CreateEmbeddedObjectInstance("SMS_MachineVariable");  
        computerVariable["Name"].StringValue = name;  
        computerVariable["Value"].StringValue = value;  
        computerVariable["IsMasked"].BooleanValue = mask;  

        // Add the computer variable to the computer settings.  
        computerVariables.Add(computerVariable);  
        computerSettings.SetArrayItems("MachineVariables", computerVariables);  

        computerSettings.Put();  
    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed to create computer variable: " + e.Message);  
        throw;  
    }  
}  

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

Parâmetro Tipo Descrição
connection -Gerenciado: WqlConnectionManager
- VBScript: SWbemServices
Uma conexão válida com o provedor de SMS.
siteCode -Gerenciado: String
-Vbscript: String
O código do site do site de origem.
name -Gerenciado: String
-Vbscript: String
O nome da variável a ser criada.
value -Gerenciado: String
-Vbscript: String
O valor da variável.
mask -Gerenciado: Boolean
-Vbscript: Boolean
Especifica se o valor é exibido no console Configuration Manager.

true – o valor da variável não é exibido.

false – o valor da variável é exibido.
computerID -Gerenciado: Integer
-Vbscript: Integer
O identificador do computador. Normalmente, essa é a propriedade da classe ResourceID SMS_R_System.

Compilando o código

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

Namespaces

System

System.Collections.Generic

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

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

Sobre o gerenciamento de computador de implantação do sistema operacional