2017-04-18 35 views
0

我试图找出一个任务序列坐在使用WMI,这样我只能获得存储在特定的子文件夹特定的任务序列的位置。获取位置2012 SCCM的任务序列使用WMI C#

例如在SCCM配置管理器下“软件库>概览>操作系统>任务序列”我有一个名为“活”的文件夹,这就是任务序列我想查询坐。我遇到的问题是还有一些其他文件夹包含我想忽略的任务序列(在“任务序列”下)。

我可以用

select * from SMS_TaskSequencePackage 

让所有的任务序列,但有在任何性质的任何位置。

回答

1

我不擅长写C#,但我们可以肯定使用PowerShell和WMI查询以获得特定文件夹中的对象。

在此之前,我们首先需要知道特定文件夹的ContainerNodeID。有很多方法可以获得它。例如,我们使用查询:

$node = Get-WmiObject -Namespace ROOT\SMS\SITE_pri -class sms_objectcontainernode | Where-Object {$_.name -eq "folder1"} 
$nodeID = $node.containerNodeID 

然后我们可以通过使用下面的行来获取此节点中的所有对象。 是任务序列文件夹类型。

$items = Get-WmiObject -Namespace root\sms\site_pri -Class sms_objectcontaineritem | Where-Object {$_.objectType -eq '20' -and $_.containerNodeID -eq $nodeID } 

这里我们得到Folder1中的所有对象。如果我们想在此文件夹中的所有任务序列的属性,我们可以添加如下:

$key = $items.instancekey 
$tasksequences = Get-WmiObject -Namespace root\sms\site_pri -class sms_tasksequencepackage | Where-Object {$_.packageID -in $key} 
$tasksequences 

因此,所有的完整的脚本是:(改文件夹名和的siteID)

$node = Get-WmiObject -Namespace ROOT\SMS\SITE_pri -class sms_objectcontainernode | Where-Object {$_.name -eq "folder1"} 
$nodeID = $node.containerNodeID 
$items = Get-WmiObject -Namespace root\sms\site_pri -Class sms_objectcontaineritem | Where-Object {$_.objectType -eq '20' -and $_.containerNodeID -eq $nodeId } 
$key = $items.instancekey 
$tasksequences = Get-WmiObject -Namespace root\sms\site_pri -class sms_tasksequencepackage | Where-Object {$_.packageID -in $key} 
$tasksequences 
+0

感谢这就是帮助负载和我设法只针对我需要的任务序列。通过从查询sms_objectcontainernode和sms_objectcontaineritem中获取ID,我可以获得PackageIds。 – BillyDay