Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No Configuration Manager, escreve no ficheiro de controlo do site com o Windows Management Instrumentation (WMI) através dos SMS_SiteControlFile métodos de classe.
Ao escrever no ficheiro de controlo do site com a WMI, utiliza um identificador de sessão para identificar a sua aplicação. Isto é utilizado para gerir atualizações simultâneas ao ficheiro.
Quando terminar de escrever no ficheiro de controlo do site, tem de consolidar as alterações.
SMS_SiteControlFile tem os seguintes métodos para gerir as alterações ao ficheiro de controlo do site.
| Método | Descrição |
|---|---|
CommitSCF |
Aplica as suas alterações à base de dados Configuration Manager. |
RefreshSCF |
Atualiza a cópia dentro da memória do ficheiro de controlo do site com quaisquer alterações recentes da base de dados Configuration Manager. |
GetSessionHandle |
Obtém a cópia dentro da memória do ficheiro de controlo do site e um identificador de sessão. Coloca a alça de sessão num IWbemContext objeto transmitido a todos os IWbemServices métodos. |
ReleaseSessionHandle |
Liberta a cópia dentro da memória do ficheiro de controlo do site e quaisquer recursos associados ao identificador de sessão. |
Cuidado
Deve ter experiência na gestão da configuração de um site antes de utilizar as classes fornecedor de SMS para modificar a configuração do site. Pode causar grandes danos a um site ao alterar alguns itens configuráveis. Deve ter muito cuidado ou evitar a utilização total das SMS_SCI_FileDefinition classes e SMS_SCI_SiteDefinition . Estas classes gerem o próprio ficheiro de controlo do site. Se não tiver cuidado, pode tornar o site inútil.
Para escrever no ficheiro de controlo do site
Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja Noções básicas do Fornecedor de SMS.
Crie um
SWbemNameValueconjunto de valores para conter os dados de contexto.Obtenha um identificador de sessão da
SMS_SiteControlFileclasseGetSessionHandle.Adicione o identificador de sessão aos seus dados de contexto.
Chame o
SMS_SiteControlFileobjetoRefreshSCFpara obter a cópia mais recente do ficheiro de controlo do site. Utilize os dados de contexto na chamada.Consulte o recurso de ficheiro de controlo de site que pretende atualizar com os dados de contexto.
Atualize o recurso com os dados de contexto.
Consolide as alterações ao ficheiro de controlo do site com o método de
SMS_SiteControlFileobjetoCommitSCF.Chame o método de
SMS_SiteControlFileobjetoReleaseSessionHandlepara libertar o identificador de sessão.
Exemplo
O exemplo de VBScript seguinte acede ao componente do agente cliente do ficheiro de controlo do site e cria uma propriedade fictícia, uma lista de propriedades e uma lista de várias cadeias. Em seguida, remove as atualizações que foram efetuadas. O exemplo demonstra como configurar o identificador de sessão, obter o ficheiro de controlo do site, consultar o ficheiro de controlo do site, fazer atualizações e consolidar alterações ao ficheiro de controlo do site.
No exemplo, a LocaleID propriedade é hard-coded para inglês (E.U.A.). Se precisar da região para não E.U.A. instalações, pode obtê-la a partir da propriedade Classe LocaleIDWMI de Servidor SMS_Identification.
Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.
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
O método de exemplo tem os seguintes parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
connection |
- SWbemServices | Uma ligação válida ao Fornecedor de SMS. |
siteCode |
- String |
O código do site do Configuration Manager site. |
Compilando o código
Este exemplo de C# requer:
Namespaces
System
System.Collections.Generic
System.Collections
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programação robusta
Para obter mais informações sobre o processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).
Segurança do .NET Framework
Para obter mais informações sobre como proteger aplicações Configuration Manager, veja Configuration Manager administração baseada em funções.
Confira também
Instrumentação de Gestãodo Windows Acerca do Ficheiro de Controlo de Site Configuration ManagerComo Ler uma Lista de Propriedades Incorporadas de Ficheiros de Controlo de Sites Configuration Manager