Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když správce zjišťování dat (DDM) v Configuration Manager zjistí, že váš záznam zjišťování dat (DDR) obsahuje vlastnost, která ve třídě prostředků neexistuje, přidá se vlastnost do třídy prostředků. V závislosti na datovém typu nové vlastnosti budou předchozí instance prostředku obsahovat buď nulový, nebo prázdný řetězec ("") pro hodnotu nové vlastnosti. Při aktualizaci existující třídy prostředků byste měli zadat všechny vlastnosti třídy. Nezahrnujte však sedm vlastností, které pro vás DDM vytvoří. Když DDM vytvoří novou třídu prostředků, přidá do třídy tyto další vlastnosti:
Resourceid
Název agenta
AgentSite
AgentTime
Name (Název)
Resourcetype
SMSAssignedSite
Popis těchto vlastností najdete v tématu
SMS_R_System
. Kromě vytváření těchto vlastností vytvoří DDM instanciSMS_ResourceMap
pro novou hodnotu ResourceType.
Přidání vlastností k existujícímu typu prostředku
Získejte konkrétní instanci existujícího prostředku.
Vytvořte novou instanci
SMSResGen
třídy.Vytvořte nový DDR pomocí
NewDDR
metody .Přidejte vlastnosti do DDR pomocí metod ADDPROP_.
Zapište nový DDR do souboru pomocí
DDRWrite
metody .
Příklad
Následující příklad vytvoří DDR, který přidá OrganizationalUnit
vlastnost do SMS_R_System
třídy . Tuto vlastnost pak můžete použít k vytváření kolekcí založených na odděleních a odpovídajícím způsobem distribuovat software. Pokud vaše organizace používá službu Active Directory, můžete informace, které obsahuje, použít k naplnění OrganizationalUnit
vlastnosti.
Následující příklad ukazuje klíč, název a vlastnosti GUID, které slouží k aktualizaci třídy systémových prostředků.
Sub CreateDDRToAddNewPropertiesToAnExistingResourceType()
' Define variables.
Dim resourceID
Dim existingResource
Dim newDDR
Dim siteCode
Dim organizationalUnit
' Set variables.
resourceID = 5
siteCode = "TQ1"
organizationalUnit = "Test OU"
' Get a specific resource (client) object using the resourceID value.
Set existingResource = GetObject("winmgmts:root/sms/site_" & siteCode & ":SMS_R_System.ResourceID=" & resourceID & "")
' Load an instance of the SMSResGen.dll.
Set newDDR = CreateObject("SMSResGen.SMSResGen.1")
' Create a new DDR using the DDRNew method.
newDDR.DDRNew "System", "Department Discovery", siteCode
' Add properties to the new DDR using the DDRAdd methods.
newDDR.DDRAddInteger "Client", existingResource.Client, ADDPROP_NONE
newDDR.DDRAddString "Client Version", existingResource.ClientVersion, 15, ADDPROP_NONE
newDDR.DDRAddStringArray "IP Addresses", existingResource.IPAddresses, 64, ADDPROP_NONE
newDDR.DDRAddStringArray "IP Subnets", existingResource.IPSubnets, 64, ADDPROP_NONE
newDDR.DDRAddString "Last Logon User Domain", existingResource.LastLogonUserDomain, 64, ADDPROP_NONE
newDDR.DDRAddString "Last Logon User Name", existingResource.LastLogonUserName, 255, ADDPROP_NONE
newDDR.DDRAddStringArray "MAC Addresses", existingResource.MACAddresses, 64, ADDPROP_KEY
newDDR.DDRAddString "NetBIOS Name", existingResource.NetbiosName, 64, ADDPROP_NAME
newDDR.DDRAddString "Operating System Name and Version", existingResource.OperatingSystemNameandVersion, 64, ADDPROP_NONE
newDDR.DDRAddString "Resource Domain OR Workgroup", existingResource.ResourceDomainORWorkgroup, 64, ADDPROP_NONE
newDDR.DDRAddStringArray "Resource Names", existingResource.ResourceNames, 128, ADDPROP_NONE
newDDR.DDRAddStringArray "SMS Installed Sites", existingResource.SMSInstalledSites, 3, ADDPROP_NONE
newDDR.DDRAddString "SMS Unique Identifier", existingResource.SMSUniqueIdentifier, 64, ADDPROP_GUID OR ADDPROP_KEY
newDDR.DDRAddStringArray "System Roles", existingResource.SystemRoles, 32, ADDPROP_NONE
' The new property that is being added.
newDDR.DDRAddString "Organizational Unit", OrganizationalUnit, 64, ADDPROP_NONE
' Write new DDR to file.
newDDR.DDRWrite "NewDDR_AddToExistingResource.DDR"
wscript.echo "Created new DDR."
End Sub
public void CreateDDRToAddNewPropertiesToAnExistingResourceType(WqlConnectionManager connection)
{
try
{
// Define and set the required variables.
int resourceID = 5;
string siteCode = "TQ1";
string organizationalUnit = "Test OU";
// Get a specific resource (client) object using the resourceID value.
IResultObject existingResource = connection.GetInstance(@"SMS_R_SYSTEM.ResourceID='" + resourceID + "'");
// Create the SMSResGenClass instance.
SMSRSGENCTLLib.SMSResGen newDDR = new SMSRSGENCTLLib.SMSResGen();
// Create a new DDR using the DDRNew method.
newDDR.DDRNew("System", "Department Discovery", siteCode);
// Add properties to the new DDR using the DDRAddInteger, DDRAddString and DDRAddStringArray methods.
newDDR.DDRAddInteger("Client", existingResource["Client"].IntegerValue, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddString("Client Version",existingResource["ClientVersion"].StringValue, 15, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddStringArray("IP Addresses",existingResource["IPAddresses"].StringArrayValue, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddStringArray("IP Subnets", existingResource["IPSubnets"].StringArrayValue, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddString("Last Logon User Domain",existingResource["LastLogonUserDomain"].StringValue, 255, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddString("Last Logon User Name",existingResource["LastLogonUserName"].StringValue, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_KEY);
newDDR.DDRAddStringArray("MAC Addresses",existingResource["MACAddresses"].StringArrayValue, 32, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NAME);
newDDR.DDRAddString("NetBIOS Name",existingResource["NetbiosName"].StringValue, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddString("Operating System Name and Version",existingResource["OperatingSystemNameandVersion"].StringValue, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddStringArray("Resource Names",existingResource["ResourceNames"].StringArrayValue, 128, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddStringArray("SMS Installed Sites",existingResource["SMSInstalledSites"].StringArrayValue, 3, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
newDDR.DDRAddString("SMS Unique Identifier",existingResource["SMSUniqueIdentifier"].StringValue, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_GUID | SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_KEY);
newDDR.DDRAddStringArray("System Roles",existingResource["SystemRoles"].StringArrayValue, 32, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
// The new property that is being added.
newDDR.DDRAddString("Organizational Unit", organizationalUnit, 64, SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_ARRAY | SMSRSGENCTLLib.DDRPropertyFlagsEnum.ADDPROP_NONE);
// Write new DDR to file.
newDDR.DDRWrite("NewDDR_AddToExistingResource.DDR");
Console.WriteLine("Created new DDR.");
}
catch (SmsException ex)
{
Console.WriteLine("Failed to create DDR. Error: " + ex.Message);
throw;
}
}
Ukázková metoda nemá žádné parametry.
Kompilace kódu
Důležité
Tyto příklady jazyka VBScript a C# vyžadují smsrsgen.dll a smsrsgenctl.dll. Oba soubory jsou součástí sady SDK ke stažení Configuration Manager (ve složce Redistributables).
Soubor smsrsgenctl.dll je 32bitová knihovna DLL a musí být zaregistrovaný v systému, který bude aplikaci spouštět. Kromě toho by aplikace používající smsrsgenctl.dll měla být zkompilována jako aplikace x86.
Robustní programování
Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.
Zabezpečení rozhraní .NET Framework
Další informace o zabezpečení Configuration Manager aplikací najdete v tématu Configuration Manager správa na základě rolí.