Exemplo de Script em PowerShell para auxiliar a criação de Collections para o Configuration Manager 2012 e/ou Posterior

Neste post temos um exemplo de script PowerShell para auxiliar a criação de multiplas Collections para administração Configuration Manager 2012 e/ou posterior. Vamos utilizar um arquivo .CSV auxiliar para a nomenclatura das collections e queries utilizadas.

IMPORTANTE: Faça a execução sempre em um ambiente de testes, homologação e após sua total validação programe sua execução.

 

Copie o código abaixo e salve o mesmo como exemplo MSFT-Collections.ps1

##########################################################################

# SAMPLE POWERSHELL SCRIPT #

##########################################################################

# Removes all text from the current display

Clear-Host

# Type the path from CSV file

$SourcePath = Read-Host -Prompt “Type the path from CSV file”
$SourceFile = Read-Host -Prompt “Type the filename using CSV extension”

# Import the Configuration Manager PS Module (You must have the Admin Console installed for this to work)

Import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + ‘\ConfigurationManager.psd1’) -force

# Get ConfigMgr Provider

$PSD = Get-PSDrive -PSProvider CMSite

# Open ConfigMgr Site

CD “$($PSD.Name):\”

# Get current date and time

$Date = Get-Date -Format g

# Set Update Schedule for Collections

$Schedule = New-CMSchedule -Start $Date -RecurInterval Days -RecurCount 1

# Create Default limiting collections

$LimitingCollection = “All Systems”

# Create Defaut Folder

$DefaultFolderName = “MSFT”

if (!(Test-Path “$($PSD.Name):\DeviceCollection\$DefaultFolderName”)){

New-Item -Name $DefaultFolderName -Path “$($PSD.Name):\DeviceCollection”

}

# Import Collections from CSV List

Import-Csv -Path $SourcePath\$SourceFile | ForEach-Object {

# Create device collections

$getCollection = Get-CMDeviceCollection -Name $_.CollectionName

# Check if collection exists

if ($getCollection -eq $null){
New-CMDeviceCollection -Name $_.CollectionName -LimitingCollectionName $LimitingCollection -RefreshSchedule $Schedule -RefreshType Periodic

# Create device collections

Add-CMDeviceCollectionQueryMembershipRule -CollectionName $_.CollectionName -QueryExpression $_.Query -RuleName $_.CollectionName

# Move the collection to the right folder

$FolderPath = “$($PSD.Name):\DeviceCollection\$($DefaultFolderName)”

Move-CMObject -FolderPath $FolderPath -InputObject (Get-CMDeviceCollection -Name $_.CollectionName)

$cont = $cont+1

$cont

}
}

##########################################################################

##########################################################################

Aqui parte do texto do arquivo auxiliar para a criação das collections e suas queries. No exemplo temos os campos CollectionName, Query separados por vírgula. Aqui apenas uma linha, para o exemplo completo faça o download do arquivo mais abaixo.

CollectionName,Query

All Clients Not-Approved,”select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_CM_RES_COLL_SMS00001 on SMS_CM_RES_COLL_SMS00001.ResourceId = SMS_R_System.ResourceId where SMS_CM_RES_COLL_SMS00001.IsApproved <> 1″

 

Siga os passos abaixo:

Passo 1: Criar uma pasta na unidade exemplo “C:\MSFT” e copie os 2 arquivos para dentro desta pasta

Passo 2: Executar o arquivo “MSFT-Collections.ps1” com o PowerShell para iniciar a criação das Collections

Você poderá receber uma mensagem semelhante a tela abaixo, digite Y para continuar

Passo 3: Digite o caminho e o nome do arquivo CSV, em nosso exemplo para pasta “C:\MSFT”. Ao digitar o nome “MSFT-CollectionsList.csv” do arquivo não esqueça de colocar a extensão.

Se o script PowerShell iniciar com sucesso, teremos uma tela semelhante ao print abaixo

Passo 4: Como resultado devemos ter uma pasta chamada “MSFT” e no painel da direita a estrutura de Collections

Para o download do exemplo utilizado neste post, clique aqui.

 

Abs!