Megosztás a következőn keresztül:


Új tulajdonságok hozzáadása meglévő erőforrástípushoz

A Configuration Manager, amikor a Data Discovery Manager (DDM) észleli, hogy az adatfelderítési rekord (DDR) tartalmaz egy olyan tulajdonságot, amely nem létezik az erőforrásosztályban, a tulajdonság hozzá lesz adva az erőforrásosztályhoz. Az új tulajdonság adattípusától függően az erőforrás korábbi példányai nulla vagy üres sztringet ("") tartalmaznak az új tulajdonság értékéhez. Egy meglévő erőforrásosztály frissítésekésekor meg kell adnia az összes osztálytulajdonságt. Ne tartalmazza azonban a DDM által létrehozott hét tulajdonságot. Amikor a DDM új erőforrásosztályt hoz létre, a következő további tulajdonságokat adja hozzá az osztályhoz:

  • Erőforrás-azonosító

  • Ügynök neve

  • AgentSite

  • AgentTime

  • Name (Név)

  • ResourceType

  • SMSAssignedSite

    A tulajdonságok leírását lásd: SMS_R_System. Ezen tulajdonságok létrehozása mellett a DDM létrehoz egy példányt SMS_ResourceMap az új ResourceType értékhez.

Tulajdonságok hozzáadása meglévő erőforrástípushoz

  1. Meglévő erőforrás adott példányának lekérése.

  2. Hozzon létre egy új példányt a SMSResGen osztályból.

  3. Hozzon létre egy új DDR-t a NewDDR metódussal.

  4. Adjon hozzá tulajdonságokat a DDR-hez a ADDPROP_ metódusokkal.

  5. Írja be az új DDR-t egy fájlba a DDRWrite metódussal.

Példa

Az alábbi példa létrehoz egy DDR-t, amely hozzáadja a OrganizationalUnit tulajdonságot a SMS_R_System osztályhoz. Ezt a tulajdonságot használhatja a részlegek alapján létrehozott gyűjteményekhez, és ennek megfelelően terjesztheti a szoftvereket. Ha a szervezete Active Directoryt használ, a benne található adatokkal feltöltheti a tulajdonságot OrganizationalUnit .

Az alábbi példa a rendszererőforrás-osztály frissítéséhez használt kulcs-, név- és GUID-tulajdonságokat mutatja be.


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;  
    }  
}  

A példametódus nem rendelkezik paraméterekkel.

A kód fordítása

Fontos

Ehhez a VBScript- és C#-példához smsrsgen.dll és smsrsgenctl.dllszükséges. Mindkét fájl a letölthető Configuration Manager SDK része (az "Újraterjeszthető fájlok" mappában).

A smsrsgenctl.dll fájl egy 32 bites DLL, és regisztrálva kell lennie az alkalmazást futtató rendszeren. Emellett az smsrsgenctl.dll használó alkalmazást x86-alkalmazásként kell lefordítani.

Robusztus programozás

A hibakezeléssel kapcsolatos további információkért lásd: A Configuration Manager hibák ismertetése.

.NET-keretrendszer Security

A Configuration Manager alkalmazások biztonságossá tételével kapcsolatos további információkért lásd: Configuration Manager szerepköralapú felügyelet.