我不擅長寫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