Schlagwort-Archiv: Powershell

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.

ConfigMgr 2012 R2: Pakete per Powershell auf Verteilungspunkt oder Verteilungspunktgruppe kopieren

Veröffentlicht am 26.11.2013 um 19:14 Uhr von

Quick and dirty: Hier ein Powershell-Skript, das unter Configuration Manager 2012 R2 alle verfügbaren Pakete, Applikationen, Betriebssystemabbilder und Bootimages wahlweise auf einen Verteilungspunkt oder eine Verteilungspunktgruppe kopiert.

powershell

Verteilungspunkt:

import-module 'C:\Program Files\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
$sitecode = Read-Host "Please Enter Sitecode"
cd $sitecode":"

Start-CMContentDistribution -DeploymentPackageID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -BootimageID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -OperatingsystemimageID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -OperatingsysteminstallerID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -PackageID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -TasksequenceID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -ApplicationID * -DistributionPointName "VerteilungspunktA"
Start-CMContentDistribution -DriverpackageID * -DistributionPointName "VerteilungspunktA"

Verteilungspunktgruppe:

import-module 'C:\Program Files\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
$sitecode = Read-Host "Please Enter Sitecode"
cd $sitecode":"

Start-CMContentDistribution -DeploymentPackageID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -BootimageID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -OperatingsystemimageID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -OperatingsysteminstallerID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -PackageID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -TasksequenceID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -ApplicationID * -DistributionPointGroupName "Alle Verteilungspunkte"
Start-CMContentDistribution -DriverpackageID * -DistributionPointGroupName "Alle Verteilungspunkte"

 

Powershell: Mehrere VHDX-Dateien gleichzeitig komprimieren

Veröffentlicht am 09.10.2013 um 12:03 Uhr von

Ich nutze – wie wahrscheinlich viele Berater im externen Geschäft – mein Firmennotebook gleichzeitig als Hyper-V-Host für meine Testumgebung. Die Performance ist dank SSD und massig RAM völlig ausreichend. Allerdings hab ich ein chronisches Speicherplatzproblem. Deshalb komprimiere ich regelmäßig die zahlreichen dynamischen VHDX-Datenträger über die Hyper V-Konsole (Datenträger bearbeiten -> … -> Komprimieren). Das mag bei einer Handvoll Dateien noch ganz lustig sein, aber ab einer zweistelligen Anzahl wird es anstrengend.

Deshalb habe ich mir ein PowerShell-Skript gebastelt, das benutzerdefinierte Verzeichnisse rekursiv durchsucht und alle gefundenen VHDX-Dateien bearbeitet.

Get-ChildItem "C:\Hyper V\Virtuelle Maschinen" -recurse -filter *.vhdx | ForEach-Object {Optimize-VHD -Path $_.fullname -Mode Quick}

compress_vhdx

Windows 8.1 Preview: „Eingabeaufforderung (Administrator)“ fehlt

Veröffentlicht am 25.07.2013 um 08:29 Uhr von

Ich nutze nun schon ein paar Monate Windows 8 und möchte einige Funktionen nicht mehr missen. Insbesondere das Adminmenü, welches man z.B. über die Tastenkombination Windows-Taste + X erreicht, benutze ich ständig. Bei der Windows 8.1 Preview hat Microsoft allerdings eine kleine Änderung vorgenommen. Während man hierüber bisher ganz bequem die Eingabeaufforderung mit Administratorrechten starten konnte, bietet die Preview von Windows 8.1 standardmäßig nur die Microsoft Powershell.

windows-8-1-preview-eingabeaufforderung-administrator-fehlt-1

Abhilfe schafft eine kleine Option in den Taskleisten- und Navigationseigenschaften (Rechte Maustaste auf die Startleiste -> Eigenschaften). Hinter dem Reiter „Navigation“ versteckt sich die Option „Beim Rechtsklick auf die untere Ecke oder beim Drücken von Windows-Taste+X „Eingabeaufforderung“ im Menü durch „Windows PowerShell“ ersetzen.“

windows-8-1-preview-eingabeaufforderung-administrator-fehlt-2Einfach die Option deaktivieren und schon erreicht man wieder bequem die klassiche Eingabeaufforderung.