Aracılığıyla paylaş


WMI Kullanarak Configuration Manager Site Denetim Dosyasını Okuma ve Yazma

Configuration Manager'da, sınıf yöntemlerini kullanarak Windows Yönetim Araçları'nı (WMI) kullanarak SMS_SiteControlFile site denetim dosyasına yazarsınız.

WMI kullanarak site denetim dosyasına yazarken, uygulamanızı tanımlamak için bir oturum tanıtıcısı kullanırsınız. Bu, dosyada eşzamanlı güncelleştirmeleri yönetmek için kullanılır.

Site denetim dosyasına yazmayı bitirdiğinizde, değişikliklerinizi işlemeniz gerekir.

SMS_SiteControlFile , site denetim dosyasındaki değişiklikleri yönetmek için aşağıdaki yöntemlere sahiptir.

Yöntem Açıklama
CommitSCF Değişikliklerinizi Configuration Manager veritabanına uygular.
RefreshSCF Site denetim dosyasının bellek içi kopyasını Configuration Manager veritabanındaki son değişikliklerle yeniler.
GetSessionHandle Site denetim dosyasının bellek içi kopyasını ve oturum tanıtıcısını alır. Oturum tutamacını tüm IWbemServices yöntemlere geçirilen bir IWbemContext nesneye yerleştirirsiniz.
ReleaseSessionHandle Site denetim dosyasının bellek içi kopyasını ve oturum tanıtıcınızla ilişkili tüm kaynakları serbest bırakır.

Dikkat

Site yapılandırmasını değiştirmek için SMS Sağlayıcısı sınıflarını kullanmadan önce sitenin yapılandırmasını yönetme konusunda deneyimli olmanız gerekir. Yapılandırılabilir bazı öğeleri değiştirerek bir siteye büyük zarar vekleyebilirsiniz. Çok dikkatli olmanız veya ve SMS_SCI_SiteDefinition sınıflarını SMS_SCI_FileDefinition tamamen kullanmaktan kaçınmanız gerekir. Bu sınıflar site denetim dosyasının kendisini yönetir. Dikkatli değilseniz, siteyi işe yaramaz hale getirebilirsiniz.

Site denetim dosyasına yazmak için

  1. SMS Sağlayıcısı ile bağlantı kurun. Daha fazla bilgi için bkz. SMS Sağlayıcısı ile ilgili temel bilgiler.

  2. Bağlam verilerinizi tutmak için bir SWbemNameValue değer kümesi oluşturun.

  3. sınıfından SMS_SiteControlFileGetSessionHandlebir oturum tanıtıcısı alın.

  4. Oturum tutamacını bağlam verilerinize ekleyin.

  5. Site denetim dosyasının SMS_SiteControlFile en son kopyasını almak için nesnesini RefreshSCF çağırın. Çağrıdaki bağlam verilerini kullanın.

  6. Bağlam verilerinizi kullanarak güncelleştirmek istediğiniz site denetim dosyası kaynağını sorgula.

  7. Bağlam verilerinizi kullanarak kaynağı güncelleştirin.

  8. Nesne CommitSCF yöntemini kullanarak değişikliklerinizi site denetim dosyasına işleyinSMS_SiteControlFile.

  9. SMS_SiteControlFile Oturum tanıtıcınızı serbest bırakmak için nesne ReleaseSessionHandle yöntemini çağırın.

Örnek

Aşağıdaki VBScript örneği, site denetim dosyasının istemci aracısı bileşenine erişerek sahte bir özellik, özellik listesi ve çok dizeli liste oluşturur. Ardından yapılan güncelleştirmeleri kaldırır. Örnekte oturum tutamacını ayarlama, site denetim dosyasını alma, site denetim dosyasını sorgulama, güncelleştirmeler yapma ve site denetim dosyasında değişiklik yapma işlemleri gösterilmektedir.

Örnekte LocaleID özelliği İngilizce (ABD) olarak sabit kodlanmıştır. ABD dışındakiler için yerel ayara ihtiyacınız varsa yüklemelerini SMS_Identification Sunucusu WMI SınıfıLocaleID özelliğinden alabilirsiniz.

Örnek kodu çağırma hakkında bilgi için bkz. Configuration Manager Kod Parçacıklarını Çağırma.

Sub ReadWriteScf(connection, siteCode)  

    Dim context  
    Dim query  
    Dim resource  
    Dim resources  
    Dim inParams  

    Set context = CreateObject("WbemScripting.SWbemNamedValueSet")  

    ' Add the standard SMS context qualifiers to the context object.  
    context.Add "LocaleID", "MS\1033"  
    context.Add "MachineName", "MyMachine"  
    context.Add "ApplicationName", "MyApp"  

    ' Add the session handle.  
    context.Add "SessionHandle", _  
         connection.ExecMethod("SMS_SiteControlFile", "GetSessionHandle").SessionHandle  

   ' Load site control file.  
       Set inParams = connection.Get("SMS_SiteControlFile").Methods_("RefreshSCF").InParameters.SpawnInstance_  
InParams.SiteCode = siteCode  
connection.ExecMethod "SMS_SiteControlFile", "RefreshSCF", inParams, , context  

    ' Query for the client agent component.  
    query = "SELECT * FROM SMS_SCI_ClientComp " & _  
            "WHERE ClientComponentName = 'Client Agent' " & _  
           "AND SiteCode = '" & siteCode & "'"  

    Set resources = connection.ExecQuery(query, , , context)             

    For each resource in resources  

    ' Embedded property.  

        WScript.Echo "Embedded property"  
        Wscript.Echo "-----------------"  

        Dim value  
        Dim value1  
        Dim value2  

        Call WriteScfEmbeddedProperty(connection,context,resource,"Test2",20,"Hello","World")  

        If  GetScfEmbeddedProperty(resource,"Test2",value,value1,value2) = True Then  
            Wscript.Echo "Value: " + CStr(value)  
            WScript.Echo "Value1: " + value1  
            WScript.Echo "Value2: " + value2  
        End If  

        WScript.Echo   
        dim n,l  
        dim updatedProps   
        Dim scfProp  

        n = 0  
        ' Remove the property.  
        For l = 0 To UBound (resource.Props)   

            ' Copy each element except the one to delete.  
            If resource.Props(l).PropertyName <> "Test2" Then  
                Dim embeddedProperty  
                Set embeddedProperty = connection.Get("SMS_EmbeddedProperty").Spawninstance_()  
                If l = 0 Then  
                    ' Create an array to copy to.  
                    updatedProps = array(embeddedProperty)  
                    Redim updatedProps(Ubound(resource.Props)-1)  
                End If  
                ' Copy the element.  
                embeddedProperty.PropertyName = resource.Props(l).PropertyName  
                embeddedProperty.Value = resource.Props(l).value  
                embeddedProperty.Value1 = resource.Props(l).value1  
                embeddedProperty.Value2 = resource.Props(l).value2  

                Set updatedProps(n) = embeddedProperty  
                n = n + 1  
          End If    
        Next    

        ' Update  
        resource.Props = updatedProps  
        resource.Put_, context  

        WScript.Echo         

        ' Check that the property has been deleted.   
        If  GetScfEmbeddedProperty(resource,"Test2",value,value1,value2) = True Then  
            WScript.Echo "Property found"  
        Else  
            WScript.Echo "Property not found"  
        End If      

        WScript.Echo   

    ' Embedded property list.  

        WScript.Echo "Embedded property list"  
        WScript.Echo "----------------------"  

        Dim values  
        values = Array("Tiger","Wolf")  

        Call WriteScfEmbeddedPropertyList(connection,context,resource,"Animals",values)  

        Dim retrievedValues   

        If GetScfEmbeddedPropertyList(resource,"Animals",retrievedValues) = True Then  
            Dim i,c  
            Dim updatedValues  

            c = 0   

            ' Display the list and remove the property Tiger.  
            updatedValues = Array(UBound(retrievedValues)-1)  
            For i = 0 To  UBound (retrievedValues)  
                 Wscript.Echo retrievedValues(i)  
                 If retrievedValues(i) <> "Tiger" Then  

                    updatedValues(c) = retrievedValues(i)  
                    c = c + 1  
                 End If     
            Next  

            WScript.Echo  
            ' Update the property list.  
            Call WriteScfEmbeddedPropertyList(connection,context,resource,"Animals",updatedValues)  

            ' Get the property list and display.  
            Call GetScfEmbeddedPropertyList(resource,"Animals",retrievedValues)  

            For i = 0 To  UBound (retrievedValues)  
                 Wscript.Echo retrievedValues(i)  
             Next  
        Else  
            WScript.Echo "Not found"  
        End If   

        WScript.Echo          

    ' RegMultiString list.          

        WScript.Echo "Embedded RegMultiString list"  
        WScript.Echo "----------------------------"  

        Dim valueStrings  
        valueStrings= Array("Lisa","Julie")  

        ' Write the RegMultiString list.  
        Call WriteScfRegMultiStringList(connection,context,resource,"Names2",valueStrings)  

        Dim retrievedValueStrings   

        ' Get the RegMultiString list.            
        If GetScfRegMultiStringList(resource,"Names2",retrievedValueStrings) = True Then  

            Dim updatedValueStrings  

            c = 0   
            updatedValueStrings = Array(Ubound(retrievedValueStrings)-1)  
            For i = 0 To UBound (retrievedValueStrings)  
                 Wscript.Echo retrievedValueStrings(i)  
                 if retrievedValueStrings(i) <> "Lisa" Then  
                    updatedValueStrings(c) = retrievedValueStrings(i)  
                 End If  
            Next   

            Call WriteScfRegMultiStringList(connection,context,resource,"Names",updatedValueStrings)  

            WScript.Echo   

            Call GetScfRegMultiStringList(resource,"Names",retrievedValueStrings)  

            For i = 0 To UBound (retrievedValueStrings)  
                 Wscript.Echo retrievedValueStrings(i)  
             Next   
        Else  
            WScript.Echo "Not found"              
        End If     
    Next  

    ' Commit the changes.  
    Set inParams = connection.Get("SMS_SiteControlFile").Methods_("CommitSCF").InParameters.SpawnInstance_  
    inParams.SiteCode = siteCode  
    connection.ExecMethod "SMS_SiteControlFile", "CommitSCF", inParams, , context  

    ' Release the session handle.  
    Set inParams = connection.Get("SMS_SiteControlFile").Methods_("ReleaseSessionHandle").InParameters.SpawnInstance_  
    inParams.SessionHandle = context.Item("SessionHandle")  
    connection.ExecMethod "SMS_SiteControlFile", "ReleaseSessionHandle", inParams    
End Sub  

Örnek yöntem aşağıdaki parametrelere sahiptir:

Parametre Tür Açıklama
connection - SWbemServices SMS Sağlayıcısına geçerli bir bağlantı.
siteCode - String Configuration Manager sitesinin site kodu.

Kodu Derleme

Bu C# örneği şunları gerektirir:

Ad Alanları

Sistem

System.Collections.Generic

System.Collections

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Meclis

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Sağlam Programlama

Hata işleme hakkında daha fazla bilgi için bkz . Configuration Manager Hataları Hakkında.

.NET Framework Güvenliği

Configuration Manager uygulamalarının güvenliğini sağlama hakkında daha fazla bilgi için bkz. Configuration Manager rol tabanlı yönetim.

Ayrıca Bkz

Windows Yönetim Araçları
Configuration Manager Site Denetim Dosyası Hakkında
Configuration Manager Site Denetimi Dosyası Eklenmiş Özellik Listesini Okuma