Schlagwort-Archiv: CSV

ConfigMgr 2012 R2 – Sammlungen mit Powershell aus CSV-Datei generieren

Veröffentlicht am 06.12.2013 um 12:56 Uhr von

Der System Center Configuration Manager 2012 R2 hat mit dem R2-Release ein paar neue Powershell-Cmdlets spendiert bekommen, die das Arbeiten mit dem ConfigMgr 2012 R2 über die Shell vereinfachen. Ein Beispiel:

Sammlungen mit Powershell aus CSV-Datei generieren

Ich habe passend dazu neulich ein Powershell-Skript geschrieben, welches in der Lage ist, eine CSV-Datei auszulesen und die darin enthaltenen Daten für die Erstellung von Sammlungen (bzw. Collections) zu verwenden. Standardmäßig berücksichtigt das Skript den Namen der Sammlung, die begrenzenden Sammlung, den Zielordner und eine Abfrageregel auf Basis einer WQL-Query. Natürlich kann das Skript beliebig erweitert werden.

createcollectionfromcsv.ps1

### Import Device Collection from CSV-File with Powershell   ###
### ConfigMgr 2012 R2 | SCCM 2012 R2 Script by Clientmgmt.de ###

import-module 'c:\Program Files\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
$smsproviderloc = "select * from sms_providerlocation"
$sc = Get-WmiObject -Query $smsproviderloc -Namespace "root\sms" -ComputerName localhost
$sc = $sc.sitecode
cd $sc':'

$devicecollection = '\DeviceCollection\'
$schedule = New-CMSchedule -RecurInterval Days -RecurCount 7
import-csv -Path "C:\Users\administrator.LAB\Desktop\Powershellskripte\Collections für Asset\asset.csv" -Header LimitingCollectionName, Name, Folder, Membership | Foreach-Object {
$collection = New-CMDeviceCollection -LimitingCollectionName $_.LimitingCollectionName -Name $_.Name -RefreshType Both -RefreshSchedule $schedule
Add-CMDeviceCollectionQueryMembershipRule -CollectionName $_.Name -QueryExpression $_.Membership -RuleName "Membership-Rule" 

$folderstructure = $devicecollection + $_.folder

if((test-path $folderstructure) -eq 0)
    {
    md $folderstructure
    Write-Host Create CMDeviceCollection-Folder: $folderstructure
    Write-Host Create CMDeviceCollection: $collection.Name with LimitingCollectionName: $_.LimitingCollectionName
    Move-CMObject -FolderPath $folderstructure -InputObject $collection
    }
    elseif ((Test-Path $folderstructure) -eq 1)
    {
    Move-CMObject -FolderPath $folderstructure -InputObject $collection
    Write-Host Create CMDeviceCollection: $collection.Name with LimitingCollectionName: $_.LimitingCollectionName
    }
}

asset.csv

All Systems, AST - All Systems, Asset Collections, select *  from  SMS_R_System
All Systems, AST - All Windows Servers, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion like "Microsoft Windows NT Server%"
All Systems, AST - All Windows 7 Clients, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion = "Microsoft Windows NT Workstation 6.1"
All Systems, AST - All Windows 8 Clients, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion = "Microsoft Windows NT Workstation 6.2"
All Systems, AST - All Windows 8.1 Clients, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion = "Microsoft Windows NT Workstation 6.3"
All Systems, AST - All Windows Server 2008 R2 Server, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion = "Microsoft Windows NT Server 6.1"
All Systems, AST - All Windows Server 2012 Server, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion = "Microsoft Windows NT Server 6.2"
All Systems, AST - All Windows Server 2012 R2 Server, Asset Collections, select *  from  SMS_R_System where SMS_R_System.OperatingSystemNameandVersion = "Microsoft Windows NT Server 6.3"

configmgr-2012-r2-sammlungen-mit-powershell-aus-csv-datei-generierenconfigmgr-2012-r2-sammlungen-mit-powershell-aus-csv-datei-generieren-2Das Skript funktioniert ausschließlich mit dem Configuration Manager 2012 R2. Eine vollständige Übersicht der verfügbaren Cmdlets gibt bei den Kollegen von Coretech.dk.