在 Configuration Manager 中,通过修改必要的站点控制文件设置来设置硬件清单客户端代理设置。
修改硬件清单客户端代理设置
设置与 SMS 提供程序的连接。
使用 SMS_SCI_ClientComp 类连接到站点控制文件的“硬件清单客户端代理”部分。
循环访问可用属性的数组,根据需要进行更改。
提交对站点控制文件的更改。
示例
以下示例通过使用 SMS_SCI_ClientComp 类连接到站点控制文件和更改属性来设置硬件清单客户端代理设置。
有关调用示例代码的信息,请参阅调用Configuration Manager代码片段。
Sub ConfigureHardwareInventoryClientAgentSettings(swbemServices, _
swbemContext, _
siteCode, _
newInventorySchedule, _
newMIFSize, _
newMIFCollection)
' Load site control file and get the SMS Software Update Point system resource section.
swbemServices.ExecMethod "SMS_SiteControlFile.Filetype=1,Sitecode=""" & siteCode & """", "Refresh", , , swbemContext
Query = "SELECT * FROM SMS_SCI_ClientComp " & _
"WHERE ClientComponentName = 'Hardware Inventory Agent' " & _
"AND SiteCode = '" & siteCode & "'"
Set SCIComponentSet = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)
' Only one instance is returned from the query.
For Each SCIComponent In SCIComponentSet
' Set the client agent by setting the Flags value to 0 or 1 using the enableDisableClientAgent variable.
wscript.echo " "
wscript.echo "Hardware Inventory Agent"
wscript.echo "Current value " & SCIComponent.Flags
' Modify the value.
SCIComponent.Flags = enableDisableClientAgent
wscript.echo "New value " & enableDisableClientAgent
'Loop through the array of embedded SMS_EmbeddedProperty instances.
For Each vProperty In SCIComponent.Props
' Setting: Inventory Schedule
If vProperty.PropertyName = "Inventory Schedule" Then
wscript.echo " "
wscript.echo vProperty.PropertyName
wscript.echo "Current value " & vProperty.Value2
'Modify the value.
vProperty.Value2 = newInventorySchedule
wscript.echo "New value " & newInventorySchedule
End If
' Setting: Maximum 3rd Party MIF Size
If vProperty.PropertyName = "Maximum 3rd Party MIF Size" Then
wscript.echo " "
wscript.echo vProperty.PropertyName
wscript.echo "Current value " & vProperty.Value
' Modify the value.
vProperty.Value = newMIFSize
wscript.echo "New value " & newMIFSize
End If
' Setting: MIF Collection
If vProperty.PropertyName = "MIF Collection" Then
wscript.echo " "
wscript.echo vProperty.PropertyName
wscript.echo "Current value " & vProperty.Value
' Modify the value.
vProperty.Value = newMIFCollection
wscript.echo "New value " & newMIFCollection
End If
Next
' Update the component in your copy of the site control file. Get the path
'to the updated object, which could be used later to retrieve the instance.
Set SCICompPath = SCIComponent.Put_(wbemChangeFlagUpdateOnly, swbemContext)
Next
' Commit the change to the actual site control file.
Set InParams = swbemServices.Get("SMS_SiteControlFile").Methods_("CommitSCF").InParameters.SpawnInstance_
InParams.SiteCode = siteCode
swbemServices.ExecMethod "SMS_SiteControlFile", "CommitSCF", InParams, , swbemContext
End Sub
public void ConfigureHardwareInventoryClientAgentSettings(WqlConnectionManager connection,
string siteCode,
string enableDisableClientAgent,
string newInventorySchedule,
string newMIFSize,
string newMIFCollection)
{
try
{
IResultObject siteDefinition = connection.GetInstance(@"SMS_SCI_ClientComp.FileType=1,ItemType='Client Component',SiteCode='" + siteCode + "',ItemName='Hardware Inventory Agent'");
// Setting: Enable Client Agent
// Enable or disable the client agent by setting the Flags value to 0 or 1 using the enableDisableClientAgent variable.
Console.WriteLine();
Console.WriteLine("Hardware Inventory Client Agent");
Console.WriteLine("Current value: " + siteDefinition["Flags"].StringValue);
// Change value using the enableDisableClientAgent value passed in.
siteDefinition["Flags"].StringValue = enableDisableClientAgent;
Console.WriteLine("New value : " + enableDisableClientAgent);
foreach (KeyValuePair<string, IResultObject> kvp in siteDefinition.EmbeddedProperties)
{
// Create temporary working copy of embedded properties.
Dictionary<string, IResultObject> embeddedProperties = siteDefinition.EmbeddedProperties;
// Setting: Inventory Schedule
if (kvp.Value.PropertyList["PropertyName"] == "Inventory Schedule")
{
Console.WriteLine();
Console.WriteLine(kvp.Value.PropertyList["PropertyName"]);
Console.WriteLine("Current value: " + kvp.Value.PropertyList["PropertyName"]);
// Change value using the newInventorySchedule value passed in.
embeddedProperties["Inventory Schedule"]["Value2"].StringValue = newInventorySchedule;
Console.WriteLine("New value : " + newInventorySchedule);
}
// Setting: Maximum 3rd Party MIF Size
if (kvp.Value.PropertyList["PropertyName"] == "Maximum 3rd Party MIF Size")
{
Console.WriteLine();
Console.WriteLine(kvp.Value.PropertyList["PropertyName"]);
Console.WriteLine("Current value: " + kvp.Value.PropertyList["PropertyName"]);
// Change value using the newMIFSize value passed in.
embeddedProperties["Maximum 3rd Party MIF Size"]["Value"].StringValue = newMIFSize;
Console.WriteLine("New value : " + newMIFSize);
}
// Setting: MIF Collection
if (kvp.Value.PropertyList["PropertyName"] == "MIF Collection")
{
Console.WriteLine();
Console.WriteLine(kvp.Value.PropertyList["PropertyName"]);
Console.WriteLine("Current value: " + kvp.Value.PropertyList["PropertyName"]);
// Change value using the newMIFCollection value passed in.
embeddedProperties["MIF Collection"]["Value"].StringValue = newMIFCollection;
Console.WriteLine("New value : " + newMIFCollection);
}
// Store the settings that have changed.
siteDefinition.EmbeddedProperties = embeddedProperties;
}
// Save the settings.
siteDefinition.Put();
}
catch (SmsException ex)
{
Console.WriteLine("Failed. Error: " + ex.InnerException.Message);
throw;
}
}
示例方法具有以下参数:
参数 | 类型 | 说明 |
---|---|---|
- connection - swbemServices |
-管理: WqlConnectionManager - VBScript: SWbemServices |
与 SMS 提供程序的有效连接。 |
swbemContext |
- VBScript: SWbemContext |
有效的上下文对象。 有关详细信息,请参阅如何使用 WMI 添加Configuration Manager上下文限定符。 |
siteCode |
-管理: String - VBScript: String |
站点代码。 |
enableDisableClientAgent |
-管理: String - VBScript: String |
用于启用或禁用客户端代理的值。 已禁用 - 0 已启用 - 1 |
newInventorySchedule |
-管理: String - VBScript: String |
用于设置清单计划的值。 |
newMIFSize |
-管理: String - VBScript: String |
一个值,用于设置硬件清单 MIF 的最大大小。 默认值为 512。 |
newMIFCollection |
-管理: String - VBScript: String |
用于启用或禁用 MIF 集合的值。 收集: 无 (MIF) 文件 - 0 NOIDMIF 文件 - 4 IDMIF 文件 - 8 NOIDMIF 和 IDMIF 文件 - 12 |
编译代码
此 C# 示例需要:
命名空间
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
可靠编程
有关错误处理的详细信息,请参阅关于Configuration Manager错误。
.NET Framework 安全性
有关保护Configuration Manager应用程序的详细信息,请参阅Configuration Manager基于角色的管理。
另请参阅
关于Configuration Manager清单
关于Configuration Manager站点控制文件
如何使用托管代码读取和写入Configuration Manager站点控制文件
如何使用 WMI 读取和写入Configuration Manager站点控制文件
SMS_SCI_Component服务器 WMI 类
关于计划如何Create计划令牌