SCCM获取文件夹中的项目

时间:2016-10-26 06:34:03

标签: c# sccm

我完全不熟悉SCCM,我对对象模型感到困惑。我有一个像这样的文件夹:

SCCM folder

我想获得其中的对象列表:

  • APP0001V01(等)
  • APP0001V02(等)

我到目前为止的代码是:

       public void GetCollectionTest2()
    {
        var con = this.scomService.Connect(Server, UserName, Password);

        string query = "select * from SMS_ObjectContainerItem where ContainerNodeID = '16777219'";
        IResultObject packages = con.QueryProcessor.ExecuteQuery(query);

        foreach (IResultObject ws in packages)
        {

            foreach (IResultObject item in ws.Properties)
            {
                Debug.Print(item.ToString());
            }
            string query2 = "SELECT * FROM SMS_FullCollectionMembership WHERE InstanceKey = '" + ws["InstanceKey"] + "'";
            IResultObject packages2 = con.QueryProcessor.ExecuteQuery(query2);
            foreach (IResultObject ws2 in packages2)
            {
                Debug.Print(ws2["Name"].StringValue);
            }
        }
    }

我认为

"select * from SMS_ObjectContainerItem where ContainerNodeID = '16777219'";

返回我想要的文件夹但是当我尝试获取内容时,我只是一直在画一个空白。

我该怎么办?

更新

感谢新国的回复我现在有:

        public void GetCollectionTest2()
    {
        var con = this.scomService.Connect(Server, UserName, Password);

        string query = "select * from SMS_ObjectContainerItem  where ContainerNodeID = '16777219'";
        IResultObject packages = con.QueryProcessor.ExecuteQuery(query);

        foreach (IResultObject ws in packages)
        {

            foreach (IResultObject item in ws.Properties)
            {
                Debug.Print(item.ToString());
            }
        }
    }

这似乎给了我所有的项目,但我如何得到他们的名字?

目前我只能退回这些:

instance of SMS_ObjectContainerItem
{
    ContainerNodeID = 16777219;
    InstanceKey = "0010047C";
    MemberGuid = "C8A66344-B7E8-451B-A4EF-9BFB3B3E228C";
    MemberID = 16778256;
    ObjectType = 5000;
    ObjectTypeName = "SMS_Collection_Device";
    SourceSite = "";
};

我假设我需要链接使用ID来查找其他地方的名称,但我找不到任何关于此的文档?

2 个答案:

答案 0 :(得分:1)

我建议你从SMS_ObjectContainerItem 运行 select *来查看结果。 length

Here is the result my test lab.是一个非常有用的工具。

答案 1 :(得分:0)

由于通过WMI Explorer进行了很好的翻找,Ahh终于解决了问题。在上图中,左侧的文件夹是Containers&右边的是收藏品。

所以我想要的代码是:

    public void GetCollectionTest2()
    {
        var con = this.scomService.Connect(Server, UserName, Password);

        string query = "select * from SMS_ObjectContainerItem  where ContainerNodeID = '16777219'";
        IResultObject packages = con.QueryProcessor.ExecuteQuery(query);

        foreach (IResultObject ws in packages)
        {
            Debug.Print(ws["InstanceKey"].StringValue);

            string query2 = "SELECT * FROM SMS_Collection WHERE CollectionID='"+ ws["InstanceKey"].StringValue +"'";

            //// Run query.
            IResultObject colResultObject = con.QueryProcessor.ExecuteQuery(query2);

            foreach (IResultObject ws2 in colResultObject)
            {
                Debug.Print(ws2["Name"].StringValue);
            }
        }
    }

感谢您的帮助,以获得这个新的