Associação de coleta de dispositivo SCCM com base na variável de máquina

1

Não tenho certeza se isso é bem possível, mas estou tendo dificuldades em escrever a instrução de consulta WQL que permitiria que as coleções de dispositivos SCCM fossem preenchidas com base em uma variável de máquina.

Exemplo: Dispositivo chamado "TestVM-01" tem uma variável de máquina chamada "PatchGroup" com um valor de "Hour1". Eu gostaria que a coleção de dispositivos chamada "Hour1" preenchesse dinamicamente todos os dispositivos com a variável PatchGroup definida como Hour1.

Primeiro, lutei com apenas consultar as variáveis do dispositivo via powershell e WMI, já que a classe SMS_MachineVarible é uma propriedade lenta de SMS_MachineSettings, portanto, é necessário chamar os objetos pelo caminho completo.

No PowerShell / WMI eu posso consultá-lo com algo parecido com isto

(([wmi]"\SCCM-LAB\root\sms\site_001:SMS_Machinesettings.ResourceID=11111111").machinevariables | where name -eq "PatchGroup").value

Se você consultar SMS_MachineSettings sem especificar o caminho completo do objeto, ele retornará o atributo MachineVariables como vazio

Alguém poderia me dizer como eu escreveria o WQL para puxar essa lista de objetos da classe SMS_Resource "onde PatchGroup = x"?

    
por Evan 24.08.2016 / 23:11

1 resposta

0

Uma única Consulta WMI não funciona, nem o 'Create Device Collection Wizard'. As propriedades lazy são uma lista de propriedades e valores das instâncias de outro objeto, precisamos usar a interface COM SwbemServices.ExecQuery () em VBscript & PowerShell, ou Get-WmiObject no PowerShell para puxar dados.

Eu faria isso usando, como o PowerShell Script, para gerar uma lista de ResourceIDs do computador e usar esses IDs para criar uma coleção DirectRule usando o cmdlet CM incorporado. Toda vez que eu vou rodar o script antes de usar esta coleção.

Veja os blocos de script abaixo para obter uma lista de ResourceIDs:

$cmdletLocaltion = 'C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
$sitecode = 'P01:'
Import-Module $cmdletLocaltion
cd $sitecode
#-Lines to cleanup all the directcollection membership rules -#
$machineObject = Get-WmiObject -Namespace root\sms\site_p01 -Class sms_machinesettings
Foreach ($machine in $machineObject)
    {
        $Path = $machine.__PATH
        $machine = [wmi]"$path"
        foreach ($varvalue in $machine.MachineVariables)
            {
                if (($varvalue.name -eq 'PatchGroup') -and ($varvalue.Value -eq 'Hour1'))
                    {
                        $machine.ResourceID
                #--line here to add to collection membership--#
                    }
            }    
    }
    
por 30.08.2016 / 15:09

Tags