Start-CMPackageDeployment

Start-CMPackageDeployment

Starts deployment of a software package to a Configuration Manager collection.

Syntax

Parameter Set: DeployDeviceProgramByPackageId
Start-CMPackageDeployment -CollectionName <String> -DeviceProgramName <String> -PackageId <String> [-Comment <String> ] [-DeploymentStartDay <DateTime> ] [-DeploymentStartTime <DateTime> ] [-DeployPurpose <DeployPurposeType> {Available | Required} ] [-RecurUnit <RecurUnitType> {Days | Hours | Minutes} ] [-RecurValue <Int32> ] [-Rerun <Boolean> ] [-UseMeteredNetwork <Boolean> ] [-UseUtc <Boolean> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameter Set: DeployDeviceProgramByPackageName
Start-CMPackageDeployment -CollectionName <String> -DeviceProgramName <String> -PackageName <String> [-Comment <String> ] [-DeploymentStartDay <DateTime> ] [-DeploymentStartTime <DateTime> ] [-DeployPurpose <DeployPurposeType> {Available | Required} ] [-RecurUnit <RecurUnitType> {Days | Hours | Minutes} ] [-RecurValue <Int32> ] [-Rerun <Boolean> ] [-UseMeteredNetwork <Boolean> ] [-UseUtc <Boolean> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameter Set: DeployDeviceProgramByPackageValue
Start-CMPackageDeployment -CollectionName <String> -DeviceProgramName <String> -Package <IResultObject> [-Comment <String> ] [-DeploymentStartDay <DateTime> ] [-DeploymentStartTime <DateTime> ] [-DeployPurpose <DeployPurposeType> {Available | Required} ] [-RecurUnit <RecurUnitType> {Days | Hours | Minutes} ] [-RecurValue <Int32> ] [-Rerun <Boolean> ] [-UseMeteredNetwork <Boolean> ] [-UseUtc <Boolean> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameter Set: DeployStandardProgramByPackageId
Start-CMPackageDeployment -CollectionName <String> -PackageId <String> -StandardProgramName <String> [-AllowSharedContent <Boolean> ] [-AllowUsersRunIndependently <Boolean> ] [-Comment <String> ] [-DeploymentAvailableDay <DateTime> ] [-DeploymentAvailableTime <DateTime> ] [-DeploymentExpireDay <DateTime> ] [-DeploymentExpireTime <DateTime> ] [-DeployPurpose <DeployPurposeType> {Available | Required} ] [-FastNetworkOption <FastNetworkOptionType> {DownloadContentFromDistributionPointAndRunLocally | RunProgramFromDistributionPoint} ] [-PersistOnWriteFilterDevice <Boolean> ] [-RerunBehavior <RerunBehaviorType> {AlwaysRetunProgram | NeverRerunDeployedProgram | RerunIfFailedPreviousAttempt | RerunIfSucceededOnpreviousAttempt} ] [-Schedule <IResultObject[]> ] [-ScheduleEvent {AsSoonAsPossible | LogOff | LogOn}[] ] [-SendWakeUpPacket <Boolean> ] [-SlowNetworkOption <SlowNetworkOptionType> {DoNotRunProgram | DownloadContentFromDistributionPointAndLocally | RunProgramFromDistributionPoint} ] [-SoftwareInstallation <Boolean> ] [-SystemRestart <Boolean> ] [-UseMeteredNetwork <Boolean> ] [-UseUtcForAvailableSchedule <Boolean> ] [-UseUtcForExpireSchedule <Boolean> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameter Set: DeployStandardProgramByPackageName
Start-CMPackageDeployment -CollectionName <String> -PackageName <String> -StandardProgramName <String> [-AllowSharedContent <Boolean> ] [-AllowUsersRunIndependently <Boolean> ] [-Comment <String> ] [-DeploymentAvailableDay <DateTime> ] [-DeploymentAvailableTime <DateTime> ] [-DeploymentExpireDay <DateTime> ] [-DeploymentExpireTime <DateTime> ] [-DeployPurpose <DeployPurposeType> {Available | Required} ] [-FastNetworkOption <FastNetworkOptionType> {DownloadContentFromDistributionPointAndRunLocally | RunProgramFromDistributionPoint} ] [-PersistOnWriteFilterDevice <Boolean> ] [-RerunBehavior <RerunBehaviorType> {AlwaysRetunProgram | NeverRerunDeployedProgram | RerunIfFailedPreviousAttempt | RerunIfSucceededOnpreviousAttempt} ] [-Schedule <IResultObject[]> ] [-ScheduleEvent {AsSoonAsPossible | LogOff | LogOn}[] ] [-SendWakeUpPacket <Boolean> ] [-SlowNetworkOption <SlowNetworkOptionType> {DoNotRunProgram | DownloadContentFromDistributionPointAndLocally | RunProgramFromDistributionPoint} ] [-SoftwareInstallation <Boolean> ] [-SystemRestart <Boolean> ] [-UseMeteredNetwork <Boolean> ] [-UseUtcForAvailableSchedule <Boolean> ] [-UseUtcForExpireSchedule <Boolean> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Parameter Set: DeployStandardProgramByPackageValue
Start-CMPackageDeployment -CollectionName <String> -Package <IResultObject> -StandardProgramName <String> [-AllowSharedContent <Boolean> ] [-AllowUsersRunIndependently <Boolean> ] [-Comment <String> ] [-DeploymentAvailableDay <DateTime> ] [-DeploymentAvailableTime <DateTime> ] [-DeploymentExpireDay <DateTime> ] [-DeploymentExpireTime <DateTime> ] [-DeployPurpose <DeployPurposeType> {Available | Required} ] [-FastNetworkOption <FastNetworkOptionType> {DownloadContentFromDistributionPointAndRunLocally | RunProgramFromDistributionPoint} ] [-PersistOnWriteFilterDevice <Boolean> ] [-RerunBehavior <RerunBehaviorType> {AlwaysRetunProgram | NeverRerunDeployedProgram | RerunIfFailedPreviousAttempt | RerunIfSucceededOnpreviousAttempt} ] [-Schedule <IResultObject[]> ] [-ScheduleEvent {AsSoonAsPossible | LogOff | LogOn}[] ] [-SendWakeUpPacket <Boolean> ] [-SlowNetworkOption <SlowNetworkOptionType> {DoNotRunProgram | DownloadContentFromDistributionPointAndLocally | RunProgramFromDistributionPoint} ] [-SoftwareInstallation <Boolean> ] [-SystemRestart <Boolean> ] [-UseMeteredNetwork <Boolean> ] [-UseUtcForAvailableSchedule <Boolean> ] [-UseUtcForExpireSchedule <Boolean> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

Detailed Description

The Start-CMPackageDeployment cmdlet starts deployment of a specified software package to computers that belong to a Microsoft System Center 2012 SP1 Configuration Manager collection. You can choose when the package becomes available and when the package deployment expires. You can specify whether System Center 2012 Configuration Manager deploys the package only once or repeatedly and what happens when installation fails for a computer.

Parameters

-AllowSharedContent<Boolean>

Indicates whether clients use shared content. If this value is $True, clients attempt to download content from other clients that downloaded that content. If this value is $False, clients do not attempt to download from other clients.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-AllowUsersRunIndependently<Boolean>

Indicates whether uses can install the software independently. If this value is $True, users can install software in this package from the software library regardless of the scheduled installation time. If this value is $False, the software installs at the scheduled time.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-CollectionName<String>

Specifies the ID of a device or user collection.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-Comment<String>

Specifies a comment for the deployment.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeploymentAvailableDay<DateTime>

Specifies a day as a DateTime object. To obtain a DateTime object, use the Get-Date cmdlet. For more information, type Get-Help Get-Date. This is the day on which the deployment becomes available. If you specify a value for the DeployAvailableTime parameter in addition to this parameter, the cmdlet uses that value.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeploymentAvailableTime<DateTime>

Specifies a time as a DateTime object. This is the time at which the deployment becomes available.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeploymentExpireDay<DateTime>

Specifies a day as a DateTime object. This is the day on which the deployment expires. If you specify a value for the DeploymentExpireTime parameter in addition to this parameter, the cmdlet uses that value.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeploymentExpireTime<DateTime>

Specifies a time as a DateTime object. This is the time at which the deployment expires.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeploymentStartDay<DateTime>

Specifies a day as a DateTime object. This is the day on which the deployment starts. If you specify a value for the DeploymentStartTime parameter in addition to this parameter, the cmdlet uses that value.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeploymentStartTime<DateTime>

Specifies a time as a DateTime object. This is the time at which the deployment starts.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeployPurpose<DeployPurposeType>

Specifies the purpose for the deployment. The acceptable values for this parameter are:

-- Available
-- Required

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-DeviceProgramName<String>

Specifies the name of a device program.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-FastNetworkOption<FastNetworkOptionType>

Specifies client behavior on a fast network. The acceptable values for this parameter are:

-- DownloadContentFromDistributionPointAndRunLocally
-- RunProgramFromDistributionPoint

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-Package<IResultObject>

Specifies a package object. To obtain a package object, use the Get-CMPackage cmdlet.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-PackageId<String>

Specifies the ID of a package.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-PackageName<String>

Specifies the name of a package.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-PersistOnWriteFilterDevice<Boolean>

Indicates whether to enable write filters for embedded devices. For a value of $True, the device commits changes during a maintenance window. This action requires a restart. For a value of $False, the device saves changes in an overlay and commits them later.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-RecurUnit<RecurUnitType>

Specifies a unit for a recurring deployment. The acceptable values for this parameter are:

-- Days
-- Hours
-- Minutes

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-RecurValue<Int32>

Specifies how often a deployment recurs. This parameter depends on the unit type specified in the RecurUnit parameter. This value can be between 1 and 23 if the unit is Hours, between 1 and 31 if the unit is Days, or between 1 and 59 if the unit is Minutes.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-Rerun<Boolean>

Indicates whether the deployment reruns. If this value is $True, the deployment runs again for clients as specified in the RerunBehavior parameter. If this value is $False, the deployment does not run again.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-RerunBehavior<RerunBehaviorType>

Specifies how a deployment reruns on a client. The acceptable values for this parameter are:

-- AlwaysRetunProgram. Rerun as scheduled, even if the deployment succeeded. You can use this value for recurring deployments.
-- NeverRerunDeployedProgram. Does not rerun, even if the deployment failed or files changed.
-- RerunIfFailedPreviousAttempt. Rerun, as scheduled, if the deployment failed on the previous attempt.
-- RerunIfSucceededOnpreviousAttempt. Rerun only if the previous attempt succeeded. You can use this value for updates that depend on the previous update.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-Schedule<IResultObject[]>

Specifies a schedule object for the deployment.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-ScheduleEvent<ScheduleEventType[]>

Specifies an array of schedule event types. The acceptable values for this parameter are:

-- AsSoonAsPossible
-- LogOff
-- LogOn
-- SendWakeUpPacket

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-SendWakeUpPacket<Boolean>

Indicates whether to send a wake up packet to computers before the deployment begins. If this value is $True, Configuration Manager wakes a computer from sleep. If this value is $False, it does not wake computers from sleep. For computers to wake, you must first configure Wake On LAN.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-SlowNetworkOption<SlowNetworkOptionType>

Specifies how Configuration Manager deploys this package in a slow network. The acceptable values for this parameter are:

-- DoNotRunProgram
-- DownloadContentFromDistributionPointAndLocally
-- RunProgramFromDistributionPoint

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-SoftwareInstallation<Boolean>

Indicates whether to install the deployed software outside of maintenance windows. A maintenance window is a specified period of time used for computer maintenance and updates. If this value is $True, the Configuration Manager installs software according to schedule, even if the schedule falls outside a maintenance window. If this value is $False, Configuration Manager does not install deployed software outside any windows, but waits for a maintenance window.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-StandardProgramName<String>

Specifies a standard program name.

Aliases

none

Required?

true

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-SystemRestart<Boolean>

Indicates whether a system restarts outside a maintenance window. A maintenance window is a specified period of time used for computer maintenance and updates. If this value is $True, any required restart takes place without regard to maintenance windows. If this value is $False, the computer does not restart outside a maintenance window.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-UseMeteredNetwork<Boolean>

Indicates whether to allow clients to download content over a metered Internet connection after the deadline, which may incur additional expense.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-UseUtc<Boolean>

Indicates whether to use Coordinated Universal Time (UTC), also known as Greenwich Mean Time. If this value is $True, Configuration Manager uses UTC for this deployment. If this value is $False, Configuration Manager uses local time.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-UseUtcForAvailableSchedule<Boolean>

Indicates whether to use UTC for available schedule. If this value is $True, Configuration Manager uses UTC. If this value is $False, Configuration Manager uses local time.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-UseUtcForExpireSchedule<Boolean>

Indicates whether to use UTC for expire schedule. If this value is $True, Configuration Manager uses UTC. If this value is $False, Configuration Manager uses local time.

Aliases

none

Required?

false

Position?

named

Default Value

none

Accept Pipeline Input?

True (ByPropertyName)

Accept Wildcard Characters?

false

-Confirm

Prompts you for confirmation before running the cmdlet.

Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Required?

false

Position?

named

Default Value

false

Accept Pipeline Input?

false

Accept Wildcard Characters?

false

<CommonParameters>

This cmdlet supports the common parameters: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, and -OutVariable. For more information, see    about_CommonParameters (https://go.microsoft.com/fwlink/p/?LinkID=113216).

Inputs

The input type is the type of the objects that you can pipe to the cmdlet.

Outputs

The output type is the type of the objects that the cmdlet emits.

Examples

Example 1: Start a recurring deployment

This command starts deployment for a named package to the collection named All Systems for the device program named DPM. The command specifies a start day and start time. The command includes a descriptive comment. The Rerun parameter has a value of $True and the command specifies a recur value of seven and a recur unit of Days, so deployment reruns every seven days. The deployment uses metered network. The deployment uses UTC time.

PS C:\> Start-CMPackageDeployment -CollectionName "All Systems" -DeviceProgramName "DPM" -PackageName "User State Migration Tool for Windows 8" -Comment "DPM for all systems." -DeploymentStartDay 2012/10/26 -DeploymentStartTime 12:12 -RecurUnit Days -RecurValue 7 -Rerun $True -UseMeteredNetwork $True -UseUtc $True 

Example 2: Start a recurring deployment for an available package

This command starts deployment for a named package to the collection named Western Computers for the device program named DPM. The command includes a descriptive comment. The command specifies Available as the DeployPurpose, therefor users can decide whether to install this software. The Rerun parameter has a value of $True. The deployment uses UTC time.

PS C:\> Start-CMPackageDeployment -CollectionName "Western Computers" -DeviceProgramName "DPM" -PackageName "User State Migration Tool for Windows 8" -Comment "Deployment for Western office." -DeployPurpose Available -Rerun $True -UseUtc $True 

Example 3: Start a deployment for a standard program

This command starts a deployment of a package named User State Migration Tool for Windows 8 to the collection named All Systems for the standard program named SPM. The command does not allow computers to use shared content.

PS C:\> Start-CMPackageDeployment -CollectionName "All Systems" -PackageName "User State Migration Tool for Windows 8" -StandardProgramName "SPM" AllowSharedContent $False

Set-CMPackageDeployment

Get-CMPackage

Get-Date