Čtení a zápis do řídicího souboru lokality nástroje Configuration Manager pomocí rozhraní WMI
V nástroji Configuration Manager zapisujete do řídicího souboru lokality pomocí rozhraní WMI (Windows Management Instrumentation) pomocí SMS_SiteControlFile
metod třídy.
Při zápisu do řídicího souboru webu pomocí rozhraní WMI se k identifikaci aplikace používá popisovač relace. Slouží ke správě souběžných aktualizací souboru.
Po dokončení zápisu do řídicího souboru webu musíte změny potvrdit.
SMS_SiteControlFile má následující metody pro správu změn v souboru ovládacího prvku lokality.
Metoda | Popis |
---|---|
CommitSCF |
Použije provedené změny na databázi nástroje Configuration Manager. |
RefreshSCF |
Aktualizuje kopii řídicího souboru lokality v paměti všemi nedávnými změnami z databáze nástroje Configuration Manager. |
GetSessionHandle |
Získá kopii řídicího souboru lokality v paměti a popisovač relace. Popisovač relace umístíte do objektu IWbemContext , který je předán všem IWbemServices metodám. |
ReleaseSessionHandle |
Uvolní kopii řídicího souboru lokality v paměti a všechny prostředky přidružené k popisovači relace. |
Upozornění
Před použitím tříd poskytovatele serveru SMS ke změně konfigurace lokality byste měli mít zkušenosti se správou konfigurace lokality. Změnou některých konfigurovatelných položek můžete webu způsobit velkou škodu. Měli byste postupovat velmi opatrně nebo se zcela vyhnout používání SMS_SCI_FileDefinition
tříd a SMS_SCI_SiteDefinition
. Tyto třídy spravují samotný řídicí soubor webu. Pokud nejste opatrní, můžete web zneužit.
Zápis do řídicího souboru webu
Nastavte připojení k poskytovateli serveru SMS. Další informace najdete v tématu Základy poskytovatele serveru SMS.
Vytvořte
SWbemNameValue
sadu hodnot, která bude obsahovat kontextová data.Získejte popisovač relace z
SMS_SiteControlFile
třídyGetSessionHandle
.Přidejte popisovač relace do kontextových dat.
Voláním objektu
SMS_SiteControlFile
RefreshSCF
získáte nejnovější kopii ovládacího souboru webu. Použijte kontextová data ve volání.Pomocí kontextových dat zadejte dotaz na prostředek souboru ovládacího prvku webu, který chcete aktualizovat.
Aktualizujte prostředek pomocí kontextových dat.
Potvrďte změny v řídicím souboru webu pomocí metody objektu
SMS_SiteControlFile
CommitSCF
.Voláním objektové
SMS_SiteControlFile
ReleaseSessionHandle
metody uvolněte popisovač relace.
Příklad
Následující příklad jazyka VBScript přistupuje ke komponentě klientského agenta řídicího souboru lokality a vytvoří fiktivní vlastnost, seznam vlastností a seznam více řetězců. Potom odebere provedené aktualizace. Příklad ukazuje, jak nastavit popisovač relace, získat řídicí soubor webu, dotazovat se na řídicí soubor webu, provést aktualizace a potvrdit změny v řídicím souboru webu.
V tomto příkladu LocaleID
je vlastnost pevně zakódovaná na angličtinu (USA). Pokud potřebujete národní prostředí pro jiné uživatele než USA můžete ho získat z vlastnosti SMS_Identification serverová třídaLocaleID
služby WMI.
Informace o volání ukázkového kódu najdete v tématu Volání fragmentů kódu nástroje Configuration Manager.
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
Ukázková metoda má následující parametry:
Parametr | Typ | Popis |
---|---|---|
connection |
- SWbemServices | Platné připojení k poskytovateli serveru SMS. |
siteCode |
- String |
Kód lokality pro lokalitu nástroje Configuration Manager. |
Kompilace kódu
Tento příklad jazyka C# vyžaduje:
Obory názvů
Systém
System.Collections.Generic
System.Collections
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Shromáždění
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robustní programování
Další informace o zpracování chyb najdete v tématu Informace o chybách nástroje Configuration Manager.
Zabezpečení rozhraní .NET Framework
Další informace o zabezpečení aplikací Nástroje Configuration Manager najdete v tématu Správa na základě rolí nástroje Configuration Manager.
Viz taky
Instrumentace správy systému Windows
O řídicím souboru lokality nástroje Configuration Manager
Čtení seznamu vložených vlastností souboru ovládacího prvku lokality nástroje Configuration Manager