2017-04-18 80 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