【问题标题】:c# get result from wql inner join with SCCM 2016c# 从 wql 内连接获取结果与 SCCM 2016
【发布时间】:2018-09-19 17:13:44
【问题描述】:

从任务序列中,我需要在 2 个不同的类中有 2 个信息

public static readonly string TSPackageClassString = "SMS_TaskSequencePackage";
public static readonly string TSContainerItem = "SMS_ObjectContainerItem";  

我的 WMI 查询

string query = string.Format(CultureInfo.InvariantCulture,
               "SELECT {0}.PackageID, {0}.Name, {0}.SecuredScopeNames, {0}.ObjectPath, {1}.ContainerNodeID " +
               "FROM {0} INNER JOIN {1} ON {1}.InstanceKey = {0}.PackageID " +
               "WHERE {1}.ObjectType = 20",
                TSPackageClassString, TSContainerItem);

运行查询

IResultObject listOfTaskSequences = connection.QueryProcessor.ExecuteQuery(query);

通过查询返回的对象集合枚举

foreach (IResultObject TS in listOfTaskSequences)
{
     MessageBox.Shox(TS.ToString());
}

消息框
Screenshot

然后我找不到这样浏览结果的方法:

string packageID = TS["PackageID"].StringValue;
string folderID =  TS["ContainerNodeID"].StringValue;
// or ...
string packageID = TS["SMS_TaskSequencePackage.PackageID"].StringValue;
string folderID =  TS["SMS_ObjectContainerItem.ContainerNodeID"].StringValue;

感谢您的帮助!

【问题讨论】:

    标签: c# inner-join configurationmanager sccm wql


    【解决方案1】:

    你必须这样写(需要对 System.Management 的 System.Management.ManagementBaseObject 的引用):

    using System.Management;
    
    string folderID = ((ManagementBaseObject)TS["SMS_ObjectContainerItem"].ObjectValue)["ContainerNodeID"].ToString();
    
    // or
    
    ManagementBaseObject tsp = TS["SMS_TaskSequencePackage"].ObjectValue as ManagementBaseObject;
    string packageID = tsp["PackageID"].ToString();
    

    话虽如此,使用 ManagementBaseObjects 的整个过程可能非常不必要的复杂和烦人,而且 WMI 通常很慢,所以如果您有可能直接在数据库中而不是在 WMI 数据库中执行 SCCM 查询,您将得到它更快,没有奇怪的中间数据类型,还可以使用比 WQL 更强大的 SQL

    【讨论】:

    • 非常感谢!!!我曾向我的客户提出这个(SQL),但他拒绝了。仅在 WQL 中 :(
    • 是的,我担心您可能会有一些限制,但我想我提一下以防万一。很高兴听到它奏效了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多