question

JoeEmenaker-7909 avatar image
0 Votes"
JoeEmenaker-7909 asked LimitlessTechnology-2700 answered

Is there a way to make simple Powershell queries of SCCM more efficient?

I'm trying to automate some maintenance of device collections in SCCM. The problem is that even (seemingly) simple commands are kicking off a cascade of redundant queries. For example, just to verify that a certain folder exists (before trying to create a collection in it):

$isItThere = Get-Item -Path "SCCM:\DeviceCollection\Delegated\Dept\Servers"
# I could use Test-Path, but that takes even *longer*

Behold what this yields to the verbose output stream. Marvel at the number of duplicated queries:

Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 0 AND SearchFolder = 0 AND Name = 'Delegated'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777255 AND SearchFolder = 0 AND Name = 'Dept'
Executing WQL query: SELECT * FROM SMS_ObjectContainerNode WHERE ObjectTypeName = 'SMS_Collection_Device' AND ParentContainerNodeId = 16777730 AND SearchFolder = 0 AND Name = 'Servers'


Anybody know of a way to keep this from happening? Maybe get the SCCM provider to cache its results or maybe a more-efficient command for verifying SCCM collection folders?

windows-server-powershell
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

1 Answer

LimitlessTechnology-2700 avatar image
0 Votes"
LimitlessTechnology-2700 answered

Hi there,

Can you have a look at the Below link and see if it is helpful . Basically it is explains about the
Best practices for collections in Configuration Manager
https://docs.microsoft.com/en-us/mem/configmgr/core/clients/manage/collections/best-practices-for-collections


Hope this Answers all your queries , if not please do repost back .
If an Answer is helpful, please click "Accept Answer" and upvote it : )

5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.