Comment créer une variable d’ordinateur dans Configuration Manager

Vous créez une variable d’ordinateur pour un ordinateur qui exécute Configuration Manager en ajoutant des instances de SMS_MachineVariable à la propriété de tableau de classe MachineVariables SMS_MachineSettings.

Pour créer une variable d’ordinateur

  1. Établissez une connexion au fournisseur SMS. Pour plus d’informations, consultez Principes de base du fournisseur SMS.

  2. Obtenez une instance de SMS_MachineSettings.

  3. Pour chaque variable à ajouter, ajoutez des instances de l’objet incorporé a SMS_MachineVariable à la MachineVariables propriété du tableau.

  4. Validez les modifications apportées à l’instance de SMS_MachineSettings classe.

Exemple

L’exemple de méthode suivant crée une variable de collection et l’ajoute à la collection identifiée par l’identificateur fourni.

Dans l’exemple, la propriété est codée en dur selon l’anglais LocaleID (États-Unis). Si vous avez besoin des paramètres régionaux pour les destinations hors États-Unis. installations, vous pouvez l’obtenir à partir de la propriété de classeLocaleID WMI SMS_Identification Server.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code de Configuration Manager.

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;
    }
}

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

Paramètre Type Description
connection - Géré : WqlConnectionManager
- VBScript : SWbemServices
Connexion valide au fournisseur SMS.
siteCode - Géré : String
- VBScript : String
Code de site du site source.
name - Géré : String
- VBScript : String
Nom de la variable à créer.
value - Géré : String
- VBScript : String
Valeur de la variable.
mask - Géré : Boolean
- VBScript : Boolean
Indique si la valeur doit être affichée dans la console du Configuration Manager.

true - La valeur de la variable n’est pas affichée.

false - La valeur de la variable s’affiche.
computerID - Géré : Integer
- VBScript : Integer
Identifiant de l’ordinateur. Il s’agit généralement de la propriété de classe ResourceID SMS_R_System.

Compilation du code

L’exemple C# a les exigences de compilation suivantes :

Espaces de noms

Système

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programmation robuste

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

Sécurité de .NET Framework

Pour plus d’informations sur la sécurisation des applications Configuration Manager, voir Administration basée sur les rôles de Configuration Manager.

Voir aussi

À propos du déploiement du système d’exploitation et de la gestion de l’ordinateur