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
SMS Sağlayıcısı ile bağlantı kurun. Daha fazla bilgi için bkz. SMS Sağlayıcısı ile ilgili temel bilgiler.
Bağlam verilerinizi tutmak için bir
SWbemNameValue
değer kümesi oluşturun.sınıfından
SMS_SiteControlFile
GetSessionHandle
bir oturum tanıtıcısı alın.Oturum tutamacını bağlam verilerinize ekleyin.
Site denetim dosyasının
SMS_SiteControlFile
en son kopyasını almak için nesnesiniRefreshSCF
çağırın. Çağrıdaki bağlam verilerini kullanın.Bağlam verilerinizi kullanarak güncelleştirmek istediğiniz site denetim dosyası kaynağını sorgula.
Bağlam verilerinizi kullanarak kaynağı güncelleştirin.
Nesne
CommitSCF
yöntemini kullanarak değişikliklerinizi site denetim dosyasına işleyinSMS_SiteControlFile
.SMS_SiteControlFile
Oturum tanıtıcınızı serbest bırakmak için nesneReleaseSessionHandle
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin