So erstellen Sie eine Computervariable in Configuration Manager

Sie erstellen eine Computervariable für einen Computer, auf dem Configuration Manager ausgeführt wird, indem Sie der SMS_MachineSettings Klassenarrayeigenschaft MachineVariables Instanzen von SMS_MachineVariable hinzufügen.

So erstellen Sie eine Computervariable

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Get an instance of SMS_MachineSettings.

  3. Fügen Sie für jede hinzuzufügende Variable Instanzen des eingebetteten Objekts a SMS_MachineVariable zur MachineVariables Arrayeigenschaft hinzu.

  4. Führen Sie einen Commit der Änderungen in der SMS_MachineSettings Klassen-instance durch.

Beispiel

Die folgende Beispielmethode erstellt eine Auflistungsvariable und fügt sie der durch den angegebenen Bezeichner identifizierten Auflistung hinzu.

Im Beispiel ist die LocaleID Eigenschaft für Englisch (USA) hartcodiert. Wenn Sie das Gebietsschema für nicht-US-amerikanische können Sie sie aus der Eigenschaft SMS_Identification Server WMI-KlasseLocaleID abrufen.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager-Codeausschnitten.

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

Die Beispielmethode hat die folgenden Parameter:

Parameter Typ Beschreibung
connection - Verwaltet: WqlConnectionManager
- VBScript: SWbemDienste
Eine gültige Verbindung mit dem SMS-Anbieter.
siteCode - Verwaltet: String
- VBScript: String
Der Websitecode der Quellwebsite.
name - Verwaltet: String
- VBScript: String
Der Name der zu erstellenden Variablen.
value - Verwaltet: String
- VBScript: String
Der Wert der Variablen.
mask - Verwaltet: Boolean
- VBScript: Boolean
Gibt an, ob der Wert in der Configuration Manager-Konsole angezeigt wird.

true - Der Variablenwert wird nicht angezeigt.

false - Der Variablenwert wird angezeigt.
computerID - Verwaltet: Integer
- VBScript: Integer
Bezeichner des Computers. In der Regel ist dies die SMS_R_System Klasseneigenschaft ResourceID .

Kompilieren des Codes

Für das C#-Beispiel gelten die folgenden Anforderungen für die Kompilierung:

Namespaces

System

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager-Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Sichern von Configuration Manager-Anwendungen finden Sie unter rollenbasierte Verwaltung von Configuration Manager.

Siehe auch

Informationen zur Betriebssystembereitstellung Computerverwaltung