Recuperar a participação na coleção do SCCM via PowerShell

0

Gostaria de encontrar um script do PowerShell que recupere as coleções do SCCM para um determinado computador ou usuário. Eu sei que isso pode ser alcançado através de uma consulta SCCM, mas eu gostaria de fazer isso usando uma função do PowerShell.

O script deve funcionar com o SCCM 2007 e o SCCM 2012.

    
por Ob1lan 29.05.2015 / 08:56

2 respostas

2

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
}

Simplesmente adapte o valor das variáveis $ Server e $ Site de acordo com o seu ambiente.

Aqui estão alguns 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 associados ao computador ou ao usuário.

Espero que isso ajude!

    
por 29.05.2015 / 08:56
0

Eu sei que isso já está respondido, mas você deve verificar este script Powershell criado por Russ Slaten da Microsoft. Ele criou uma GUI em Powershell que você pode usar para: Obter membros diretos Adicionar membros diretos Remover membros diretos nas coleções de usuários e dispositivos.

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

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

link

    
por 20.01.2016 / 13:39