Did you know that there is SCCM-Commands powershell module? You can get them here: http://www.snowland.se/sccm-posh/
Today I had a need to delete a collection member. But there isn’t a function in the SCCM-Commands powershell module that can do that.
Well, there is now!! Just copy this function into the SCCM-Commands.psm1 file
Function Delete-SCCMCollectionRule {
[CmdletBinding()]
PARAM (
[Parameter(Mandatory=$true, HelpMessage="SCCM Server")][Alias("Server","SmsServer")][System.Object] $SccmServer,
[Parameter(Mandatory=$true, HelpMessage="CollectionID", ValueFromPipelineByPropertyName=$true)] $collectionID,
[Parameter(Mandatory=$true, HelpMessage="Rule Name", ValueFromPipeline=$true)] [String] $queryRuleName
)
PROCESS {
#$CollectionID = CEN00247
#$SCCMServer = $SCCM
#$QueryRuleName = LWMN00x2
$coll = [wmi]"$($SccmServer.SccmProvider.NamespacePath):SMS_Collection.CollectionID='$collectionID'"
# Find each computer
foreach ($i in $queryRuleName)
{$computer = Get-SCCMComputer -sccmServer $SccmServer -NetbiosName $i
# See if the computer is already a member
$found = $false
if ($coll.CollectionRules -ne $null) {
foreach ($member in $coll.CollectionRules)
{
if ($member.ResourceID -eq $computer.ResourceID) {$found = $true}
}
}
if ($found) {
$ResourceToDelete = $coll.CollectionRules | where {$_.rulename -eq $i}
$coll.DeleteMembershipRule($ResourceToDelete)
} else {
Write-Verbose "Computer $queryRuleName is not in the collection"
}
}
}
}