使用 wmi c# 获取 SCCM 2012 任务序列的位置
Get Location of SCCM 2012 Task Sequence using wmi c#
我正在尝试使用 wmi 确定任务序列所在的位置,以便我只能获取存储在特定子文件夹中的特定任务序列。
例如,在 "Software Library>Overview>Operating Systems>Task Sequences" 下的 SCCM 配置管理器中,我有一个名为 "LIVE" 的文件夹,这是我要查询的任务序列所在的位置。我遇到的问题是还有许多其他文件夹包含我想忽略的任务序列(在 "Task Sequences" 下)。
我可以使用
获取所有任务序列
select * from SMS_TaskSequencePackage
但是在任何属性下都没有位置。
我不擅长写C#,但我们肯定可以使用PowerShell 和WMI 查询来获取特定文件夹中的对象。
在此之前,我们需要先知道具体文件夹的ContainerNodeID。有很多方法可以得到它。例如,我们使用查询:
$node = Get-WmiObject -Namespace ROOT\SMS\SITE_pri -class sms_objectcontainernode | Where-Object {$_.name -eq "folder1"}
$nodeID = $node.containerNodeID
然后我们可以使用下面的代码获取该节点内的所有对象。 20 是任务序列文件夹类型。
$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
所以所有的完整脚本是:(更改文件夹名称和站点 ID)
$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
我正在尝试使用 wmi 确定任务序列所在的位置,以便我只能获取存储在特定子文件夹中的特定任务序列。
例如,在 "Software Library>Overview>Operating Systems>Task Sequences" 下的 SCCM 配置管理器中,我有一个名为 "LIVE" 的文件夹,这是我要查询的任务序列所在的位置。我遇到的问题是还有许多其他文件夹包含我想忽略的任务序列(在 "Task Sequences" 下)。
我可以使用
获取所有任务序列select * from SMS_TaskSequencePackage
但是在任何属性下都没有位置。
我不擅长写C#,但我们肯定可以使用PowerShell 和WMI 查询来获取特定文件夹中的对象。
在此之前,我们需要先知道具体文件夹的ContainerNodeID。有很多方法可以得到它。例如,我们使用查询:
$node = Get-WmiObject -Namespace ROOT\SMS\SITE_pri -class sms_objectcontainernode | Where-Object {$_.name -eq "folder1"}
$nodeID = $node.containerNodeID
然后我们可以使用下面的代码获取该节点内的所有对象。 20 是任务序列文件夹类型。
$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
所以所有的完整脚本是:(更改文件夹名称和站点 ID)
$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