我不擅长写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
感谢这就是帮助负载和我设法只针对我需要的任务序列。通过从查询sms_objectcontainernode和sms_objectcontaineritem中获取ID,我可以获得PackageIds。 – BillyDay