Creating ConfigMgr Servicing Plans with PowerShell
Last week we got a new set of cmdlets for Configuration Manager and now we have the ability to create Servicing Plans with PowerShell. I put together end-to-end example and with this script you can:
- Create a folder called Software Updates (can’t move Device Collections into a folder because Move-CMObject is broken in latest release)
- Create 5 Device Collections
- Create Software Updates Deployment Package
- Download the necessary upgrade package
- Distribute the package to a Distribution Point
- Create 5 different Servicing Plans
############ WINDOWS 10 SERVICING ###############################
Get-CMWindowsServicingPlan
New-CMWindowsServicingPlan
#These cmdlets require Configuration Manager 1511 or newer.
$DeploymentPackageName = ‘Windows 10 1511 Education’
New-Item -Path CTP:\DeviceCollection -Name ‘Software Updates’
New-CMCollection -Name ‘SUM – RING1’ -CollectionType Device -LimitingCollectionName ‘All Systems’
New-CMCollection -Name ‘SUM – RING2’ -CollectionType Device -LimitingCollectionName ‘All Systems’
New-CMCollection -Name ‘SUM – RING3’ -CollectionType Device -LimitingCollectionName ‘All Systems’
New-CMCollection -Name ‘SUM – RING4’ -CollectionType Device -LimitingCollectionName ‘All Systems’
New-CMCollection -Name ‘SUM – RING5’ -CollectionType Device -LimitingCollectionName ‘All Systems’
### Move-CMObject is broken
New-CMSoftwareUpdateDeploymentPackage `
-Name $DeploymentPackageName `
-Path ”\\CMTP\Sources\Updates\$DeploymentPackageName”
$DeploymentPackage = Get-CMSoftwareUpdateDeploymentPackage `
-Name $DeploymentPackageName
$UpgradePackge = Get-CMWindowsUpdate `
-Name ‘Upgrade to Windows 10 Education, version 1511, 10586 – en-us, Volume’ `
-Fast
Save-CMSoftwareUpdate `
-SoftwareUpdate $UpgradePackge `
-DeploymentPackageName $DeploymentPackageName `
-Verbose
Start-CMContentDistribution `
-DeploymentPackage $DeploymentPackageName `
-DistributionPointName ‘CMTP.corp.viamonstra.com’
New-CMWindowsServicingPlan `
-Name ‘SUM – RING1’ `
-CollectionName ‘SUM – RING1’ `
-EnabledAfterCreate $True `
-Language English `
-VerboseLevel AllMessages `
-SendWakeupPacket $True `
-RunType RunTheRuleAfterAnySoftwareUpdatePointSynchronization `
-DeploymentRing CB `
-DeploymentPackage $DeploymentPackage `
-UpdateDeploymentWaitDay 10 `
New-CMWindowsServicingPlan `
-Name ‘SUM – RING2’ `
-CollectionName ‘SUM – RING2’ `
-EnabledAfterCreate $True `
-Language English `
-VerboseLevel AllMessages `
-SendWakeupPacket $True `
-RunType RunTheRuleAfterAnySoftwareUpdatePointSynchronization `
-DeploymentRing CB `
-DeploymentPackage $DeploymentPackage `
-UpdateDeploymentWaitDay 15
New-CMWindowsServicingPlan `
-Name ‘SUM – RING3’ `
-CollectionName ‘SUM – RING3’ `
-EnabledAfterCreate $True `
-Language English `
-VerboseLevel AllMessages `
-SendWakeupPacket $True `
-RunType RunTheRuleAfterAnySoftwareUpdatePointSynchronization `
-DeploymentRing Cbb `
-DeploymentPackage $DeploymentPackage `
-UpdateDeploymentWaitDay 50
New-CMWindowsServicingPlan `
-Name ‘SUM – RING4’ `
-CollectionName ‘SUM – RING4’ `
-EnabledAfterCreate $True `
-Language English `
-VerboseLevel AllMessages `
-SendWakeupPacket $True `
-RunType RunTheRuleAfterAnySoftwareUpdatePointSynchronization `
-DeploymentRing Cbb `
-DeploymentPackage $DeploymentPackage `
-UpdateDeploymentWaitDay 75
New-CMWindowsServicingPlan `
-Name ‘SUM – RING5’ `
-CollectionName ‘SUM – RING5’ `
-EnabledAfterCreate $True `
-Language English `
-VerboseLevel AllMessages `
-SendWakeupPacket $True `
-RunType RunTheRuleAfterAnySoftwareUpdatePointSynchronization `
-DeploymentRing Cbb `
-DeploymentPackage $DeploymentPackage `
-UpdateDeploymentWaitDay 100
Have fun!
Download the script from here New-CMServicingPlan 827 bytes