SCCM 获取文件夹中的项目
SCCM Get Items in a Folder
我是 SCCM 的新手,我对对象模型感到困惑。我有一个这样的文件夹:
我想获取其中的对象列表:
- 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'";
正在 return 正在访问我想要的文件夹,但是当我尝试获取内容时,我一直画着空白。
我应该做什么?
更新
感谢郭鑫的回复我现在有:
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());
}
}
}
这似乎给了我所有的项目,但我如何得到他们的名字?
目前我只能return这些:
instance of SMS_ObjectContainerItem
{
ContainerNodeID = 16777219;
InstanceKey = "0010047C";
MemberGuid = "C8A66344-B7E8-451B-A4EF-9BFB3B3E228C";
MemberID = 16778256;
ObjectType = 5000;
ObjectTypeName = "SMS_Collection_Device";
SourceSite = "";
};
我假设我需要 link 使用 ID 在其他地方查找名称,但我找不到任何相关文档?
我推荐你 运行 select * 来自 SMS_ObjectContainerItem 看看结果。
Here is the result my test lab.
WMI Explorer 是一个非常有用的工具。
啊,由于通过 WMI Explorer 进行了很好的搜索,终于解决了这个问题。在上图中,左边的文件夹是容器,右边的是集合。
所以我想要的代码是:
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);
}
}
}
感谢您帮助我找到这个新
我是 SCCM 的新手,我对对象模型感到困惑。我有一个这样的文件夹:
我想获取其中的对象列表:
- 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'";
正在 return 正在访问我想要的文件夹,但是当我尝试获取内容时,我一直画着空白。
我应该做什么?
更新
感谢郭鑫的回复我现在有:
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());
}
}
}
这似乎给了我所有的项目,但我如何得到他们的名字?
目前我只能return这些:
instance of SMS_ObjectContainerItem
{
ContainerNodeID = 16777219;
InstanceKey = "0010047C";
MemberGuid = "C8A66344-B7E8-451B-A4EF-9BFB3B3E228C";
MemberID = 16778256;
ObjectType = 5000;
ObjectTypeName = "SMS_Collection_Device";
SourceSite = "";
};
我假设我需要 link 使用 ID 在其他地方查找名称,但我找不到任何相关文档?
我推荐你 运行 select * 来自 SMS_ObjectContainerItem 看看结果。 Here is the result my test lab.
WMI Explorer 是一个非常有用的工具。
啊,由于通过 WMI Explorer 进行了很好的搜索,终于解决了这个问题。在上图中,左边的文件夹是容器,右边的是集合。
所以我想要的代码是:
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);
}
}
}
感谢您帮助我找到这个新