Delen via


Een computervariabele maken in Configuration Manager

U maakt een computervariabele voor een computer waarop Configuration Manager wordt uitgevoerd door exemplaren van SMS_MachineVariable toe te voegen aan de eigenschap SMS_MachineSettings klassematrix MachineVariables .

Een computervariabele maken

  1. Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.

  2. Haal een exemplaar op van SMS_MachineSettings.

  3. Voor elke variabele die moet worden toegevoegd, voegt u exemplaren van het ingesloten object a SMS_MachineVariable toe aan de MachineVariables matrixeigenschap.

  4. Voer de wijzigingen door in het klasse-exemplaar SMS_MachineSettings .

Voorbeeld

Met de volgende voorbeeldmethode wordt een verzamelingsvariabele gemaakt en toegevoegd aan de verzameling die wordt geïdentificeerd door de opgegeven id.

In het voorbeeld is de LocaleID eigenschap vastgelegd in het Engels (VS). Als u de landinstelling nodig hebt voor niet-Amerikaanse installaties kunt u deze ophalen via de WMI-klasse-eigenschapLocaleID SMS_Identification-server.

Zie Configuration Manager-codefragmenten aanroepen voor meer informatie over het aanroepen van de voorbeeldcode.

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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection -Beheerd: WqlConnectionManager
- VBScript: SWbemServices
Een geldige verbinding met de SMS-provider.
siteCode -Beheerd: String
- VBScript: String
De sitecode van de bronsite.
name -Beheerd: String
- VBScript: String
De naam van de variabele die moet worden gemaakt.
value -Beheerd: String
- VBScript: String
De waarde van de variabele.
mask -Beheerd: Boolean
- VBScript: Boolean
Hiermee geeft u op of de waarde wordt weergegeven in de Configuration Manager-console.

true - de variabelewaarde wordt niet weergegeven.

false - de variabelewaarde wordt weergegeven.
computerID -Beheerd: Integer
- VBScript: Integer
De computer-id. Dit is doorgaans de klasse-eigenschap SMS_R_SystemResourceID.

De code compileren

Het C#-voorbeeld heeft de volgende compilatievereisten:

Naamruimten

Systeem

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Vergadering

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuust programmeren

Zie Over Configuration Manager-fouten voor meer informatie over foutafhandeling.

.NET Framework-beveiliging

Zie Op rollen gebaseerd beheer van Configuration Manager voor meer informatie over het beveiligen van Configuration Manager-toepassingen.

Zie ook

Informatie over computerbeheer voor besturingssysteemimplementatie