Condividi tramite


Come creare una variabile computer in Configuration Manager

È possibile creare una variabile computer per un computer che esegue Configuration Manager aggiungendo istanze di SMS_MachineVariable alla proprietà della matrice di classi MachineVariablesSMS_MachineSettings.

Per creare una variabile computer

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Ottenere un'istanza di SMS_MachineSettings.

  3. Per ogni variabile da aggiungere, aggiungere istanze dell'oggetto incorporato a SMS_MachineVariable alla proprietà della MachineVariables matrice.

  4. Eseguire il commit delle modifiche nell'istanza della SMS_MachineSettings classe.

Esempio

Il metodo di esempio seguente crea una variabile di raccolta e la aggiunge alla raccolta identificata dall'identificatore fornito.

Nell'esempio la LocaleID proprietà è hardcoded in inglese (Stati Uniti). Se sono necessarie le impostazioni locali per gli stati non statunitensi installazioni, è possibile ottenerlo dalla proprietà SMS_Identification Server WMI ClassLocaleID .

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice di 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;  
    }  
}  

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection -Gestito: WqlConnectionManager
- VBScript: SWbemServices
Connessione valida al provider SMS.
siteCode -Gestito: String
- VBScript: String
Codice del sito del sito di origine.
name -Gestito: String
- VBScript: String
Nome della variabile da creare.
value -Gestito: String
- VBScript: String
Valore della variabile.
mask -Gestito: Boolean
- VBScript: Boolean
Specifica se il valore viene visualizzato nella console di Configuration Manager.

true : il valore della variabile non viene visualizzato.

false : viene visualizzato il valore della variabile.
computerID -Gestito: Integer
- VBScript: Integer
Identificatore del computer. Si tratta in genere della proprietà della classe ResourceIDSMS_R_System.

Compilazione del codice

L'esempio C# presenta i requisiti di compilazione seguenti:

Spazi dei nomi

Sistema

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Sicurezza di .NET Framework

Per altre informazioni sulla protezione delle applicazioni di Configuration Manager, vedere Amministrazione basata sui ruoli di Configuration Manager.

Vedere anche

Informazioni sulla gestione dei computer di distribuzione del sistema operativo