Get ConfigMgr Collection rules
I’m in the process of installing Forefront Endpoint Protection and wanted to look at some of the collection queries that was created… but with the ConfigMgr console you cant view them…
So Powershell it is.
Did a function that you can use on any collection (with subcollections) to view the WQL.
Import-Module SCCM\SCCM-Functions -Force
Function Get-CollectionRules {
PARAM (
$parentCollection,
$spacer,
$sccm
)
$subCollections = Get-SCCMSubCollections -SccmServer $sccm -CollectionID $parentCollection
if ($subCollections -ne $null) {
$subCollections | ForEach-Object {
$collection = Get-SCCMCollection -Filter "CollectionID='$($_.subCollectionID)'" -SccmServer $sccm
Write-Host "$($spacer) Name: " -ForegroundColor Yellow -NoNewline
Write-Host "$($collection.CollectionID) - $($collection.Name)"
$collectionRule = (Get-SCCMCollectionRules -SccmServer ( Connect-SCCMServer ) -CollectionID $collection.CollectionID)
if ($collectionRule -ne $null) {
Write-Host "$($spacer)Limit: " -ForegroundColor Yellow -NoNewline
if ($collectionRule.LimitToCollectionID.Length -gt 0) {
Write-Host "$($collectionRule.LimitToCollectionID)" -ForegroundColor White
} else {
Write-Host "" -ForegroundColor Gray
}
Write-Host "$($spacer) WQL: " -ForegroundColor Yellow -NoNewline
Write-Host "$($collectionRule.QueryExpression)"
} else {
Write-Host "$($spacer)" -ForegroundColor Gray
}
Write-Host ""
Get-CollectionRules -parentCollection $_.subCollectionID -spacer " $($spacer)" -sccm $sccm
}
}
}
Get-CollectionRules -parentCollection "XYZ00123" -spacer "" -sccm (Connect-SCCMServer)
A small warning: It will loop all of the subcollections, and the subcollections subcollections, and so on…



