Recuperar associação à coleção SCCM via PowerShell

Recuperar associação à coleção SCCM via PowerShell

Gostaria de encontrar um script do PowerShell que recuperasse as coleções SCCM de um determinado computador ou usuário. Eu sei que isso pode ser conseguido por meio de uma consulta SCCM, mas gostaria de fazer isso usando uma função do PowerShell.

O script deve funcionar com SCCM 2007 e SCCM 2012.

Responder1

Aqui está a função do PowerShell para fazer isso:

$Server = "sccm-01"
$site = "S01"

Function Get-Collections 
{
    <# 
            .SYNOPSIS 
                Determine the SCCM collection membership    
            .DESCRIPTION
                This function allows you to determine the SCCM collection membership of a given user/computer
            .PARAMETER  Type 
                Specify the type of member you are querying. Possible values : 'User' or 'Computer'
            .PARAMETER  ResourceName 
                Specify the name of your member : username or computername
            .EXAMPLE 
                Get-Collections -Type computer -ResourceName PC001
                Get-Collections -Type user -ResourceName User01
            .Notes 
                Author : Antoine DELRUE 
                WebSite: http://obilan.be 
    #> 

    param(
    [Parameter(Mandatory=$true,Position=1)]
    [ValidateSet("User", "Computer")]
    [string]$type,

    [Parameter(Mandatory=$true,Position=2)]
    [string]$resourceName
    ) #end param

    Switch ($type)
        {
            User {
                Try {
                    $ErrorActionPreference = 'Stop'
                    $resource = Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class "SMS_R_User" | ? {$_.Name -ilike "*$resourceName*"}                            
                }
                catch {
                    Write-Warning ('Failed to access "{0}" : {1}' -f $server, $_.Exception.Message)
                }

            }

            Computer {
                Try {
                    $ErrorActionPreference = 'Stop'
                    $resource = Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class "SMS_R_System" | ? {$_.Name -ilike "$resourceName"}                           
                }
                catch {
                    Write-Warning ('Failed to access "{0}" : {1}' -f $server, $_.Exception.Message)
                }
            }
        }

    $ids = (Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class SMS_CollectionMember_a -filter "ResourceID=`"$($Resource.ResourceId)`"").collectionID
    # A little trick to make the function work with SCCM 2012
    if ($ids -eq $null)
    {
            $ids = (Get-WmiObject -ComputerName $server -Namespace "root\sms\site_$site" -Class SMS_FullCollectionMembership -filter "ResourceID=`"$($Resource.ResourceId)`"").collectionID
    }

    $array = @()

    foreach ($id in $ids)
    {
        $Collection = get-WMIObject -ComputerName $server -namespace "root\sms\site_$site" -class sms_collection -Filter "collectionid=`"$($id)`""
        $Object = New-Object PSObject
        $Object | Add-Member -MemberType NoteProperty -Name "Collection Name" -Value $Collection.Name
        $Object | Add-Member -MemberType NoteProperty -Name "Collection ID" -Value $id
        $Object | Add-Member -MemberType NoteProperty -Name "Comment" -Value $Collection.Comment
        $array += $Object
    }

    $array
}

Basta adaptar o valor das variáveis ​​$Server e $Site de acordo com seu ambiente.

Aqui estão exemplos de como usar esta função:

Get-Collections -Type computer -ResourceName PC001
Get-Collections -Type user -ResourceName User01

O resultado será uma tabela mostrando o ID da Coleção, o Nome da Coleção e o Comentário associado ao computador ou ao usuário.

Espero que isto ajude!

Responder2

Eu sei que isso já foi respondido, mas você deveria dar uma olhada neste script Powershell criado por Russ Slaten da Microsoft. Ele criou uma GUI no Powershell que você pode usar para: Obter membros diretos Adicionar membros diretos Remover membros diretos em coleções de usuários e dispositivos.

Você também pode criar uma nova coleção de usuários ao adicionar novos membros.

Eu o uso há quase um ano e nunca me falhou.

http://blogs.msdn.com/b/rslaten/archive/2014/03/10/configuration-manager-direct-membership-collection-manager.aspx

informação relacionada