使用PowerShell获取SCCM 2012全局条件的子项

使用PowerShell获取SCCM 2012全局条件的子项,powershell,sccm,Powershell,Sccm,我已经搜索了好几天了,虽然我有一个清单,列出了在PowerShell中创建全局条件的十几种不同方法,但我想知道的是,是否有更好的方法从PowerShell中的SCCM 2012中创建一个“表达式树” 我为应用程序需求定义了一小部分全局条件,其中一些基于其他全局条件的组合。e、 g 工作站X64(所有Windows 7 SP1-Windows 10 X64操作系统) 服务器X64(所有Windows Server 2008 R2-2016) 以及基于前两个的全局条件 所有系统X64(工作站X

我已经搜索了好几天了,虽然我有一个清单,列出了在PowerShell中创建全局条件的十几种不同方法,但我想知道的是,是否有更好的方法从PowerShell中的SCCM 2012中创建一个“表达式树”

我为应用程序需求定义了一小部分全局条件,其中一些基于其他全局条件的组合。e、 g

  • 工作站X64(所有Windows 7 SP1-Windows 10 X64操作系统)
  • 服务器X64(所有Windows Server 2008 R2-2016)
以及基于前两个的全局条件

  • 所有系统X64(工作站X64或服务器X64)
因此,使用
Get-CMGlobalCondition
Cmdlet,我可以获得所有全局条件的列表,我还可以使用可选的-Id,-Name来获得特定的全局条件

问题在于每个全局条件对象对其子对象(通过SDMPackageXML属性访问)的唯一引用是

  • 创作范围ID
  • 逻辑名称
对于
Get CMGlobalCondition

显然,我可以编写一些代码,反复解析整个全局条件集合,构建表达式树,但我更愿意对任何其他基于父子关系的数据层次结构做我想做的事情,并对其应用一些老式的递归,但父对象不必为每个子对象都有一个属性很容易传递到我一直使用的Cmdlet

如果SCCM的PowerShell cmdlet中没有任何内容,我并不反对使用direct WQL


万一有人问起这一问题,我们需要使用导入脚本来更新我们的UDI向导及其关联的.xml.app文件(包括将SCCM中的全局条件转换为UDI中的传递规则)

GC的唯一ID等于AuthoringScope/LogicalName,可在
SDMPackageXML
-xml:
$xml.SelectNodes(“//globalPression//globalPression”)
中的以下节点中找到。您可以使用它来查找子GC并获得LocalizedDisplayName(以及它们的依赖项,如果有的话)@RanadipDutta-感谢您的链接(认真地将它添加到我有用的SCCM PowerShell脚本集合中),尽管如此,它并不能真正回答我的问题。@FrodeF。-是的,我可以使用SDMPackageXML确定父子关系,这只是一个乏味的过程。如果所有对象都将返回以指示子关系不是Get-CMGlobalCondition cmdlet的可行参数,则这似乎有点脱离连接。同样从我可以确定的使用直接WQL的情况来看,WMI返回的信息甚至比cmdlet更少。我真的很希望有一种简单的父子关系属性,比如DOM和DirectoryInfo,啊,我想如果一直都很简单,那么编码就不会那么有趣了。wmi不提供同样的属性吗(不能测试atm)?请记住首先在wmi对象上运行
Get()
,以获取延迟属性,如SDMPackageXML。您是编写一个函数来列出单个条件的树,还是要列出所有条件(但在链接树/子节点时添加树/子节点)?