Get-CCMResourceMembership.ps1
Function Get-CCMResourceMembership { [Alias('Get-SMS_FullCollectionMembership')] [cmdletbinding(DefaultParameterSetName = 'inputObject')] param( #Specifies an the members an SCCM resource is a member of by the resource's name or ID. [Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName, Position = 0, ParameterSetName = 'Identity')] [Alias('ClientName', 'ResourceName', 'ResourceID', 'Name')] [string[]]$Identity, #Specifies a CIM instance object to use as input, must be SMS_R_System (returned by "get-CCMResource") [Parameter(ValueFromPipeline, Mandatory, ParameterSetName = 'inputObject')] [ValidateScript( {$PSItem.CimClass.CimClassName -match 'SMS_R_System|SMS_FullCollectionMembership'})] [ciminstance]$inputObject, #Restrict results to only collections with a ServiceWindow count greater than 0 [Parameter()] [alias('HasServiceWinow')] [switch]$HasMaintenanceWindow, #Specifies a set of instance properties to retrieve. [Parameter()] [string[]]$Property, # Parameter help description [Parameter()] [switch]$ShowResourceName ) Begin { $cimHash = $Global:CCMConnection.PSObject.Copy() $cimHash['ClassName'] = 'SMS_FullCollectionMembership' if ($Property) { $cimHash['Property'] = $Property } $getCollParm = @{ HasMaintenanceWindow = $HasMaintenanceWindow.IsPresent } if ($Property) { $getCollParm['Property'] = $Property } } Process { Write-Debug "Choosing parameterset: '$($PSCmdlet.ParameterSetName)'" Switch ($PSCmdlet.ParameterSetName) { 'Identity' { $resourceMembership = switch -Regex ($Identity) { '^(\d|%)+$' { Get-CimInstance @cimHash -Filter ('ResourceID LIKE "{0}"' -f $PSItem -replace '\*','%') } default { Get-CimInstance @cimHash -filter ('Name LIKE "{0}"' -f $PSItem -replace '\*','%') } } if ($ShowResourceName.IsPresent) { Write-Host "Collection memberships for: '$($resourceMembership[0].Name)'" -ForegroundColor Green } Get-CCMCollection -Identity $resourceMembership.CollectionID @getCollParm | Write-Output } 'inputObject' { if ($ShowResourceName.IsPresent) { Write-Host "Collection memberships for '$($inputObject.ResourceID)':" -ForegroundColor Green } $inputObject.ResourceID | Get-CCMResourceMembership @getCollParm } } } } |