2017-04-18 18 views
0

タスクシーケンスがwmiを使用して特定する場所を特定しようとしているため、特定のサブフォルダに格納されている特定のタスクシーケンスしか取得できません。wmiを使用してSCCM 2012のタスクシーケンスを取得するC#

たとえば、「ソフトウェアライブラリ>概要>オペレーティングシステム>タスクシーケンス」のSCCM構成マネージャーでは、「LIVE」と呼ばれるフォルダがあります。これは、タスクシーケンスを配置したい場所です。私が持っている問題は、(「タスクシーケンス」の下で)無視したいタスクシーケンスを含む多数の他のフォルダがあることです。

私は

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 

をだから、すべてのフルスクリプトは次のとおりです。(フォルダ名およびサイト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 
+0

おかげで、私は必要なタスクシーケンスだけをターゲットにすることができました。 IDを取得してsms_objectcontainernodeとsms_objectcontaineritemを照会することで、私はPackageIdsを取得することができました。 – BillyDay

関連する問題