You are currently offline, waiting for your internet to reconnect

Windows PowerShell changes in Cumulative Update 4 for System Center 2012 R2 Configuration Manager

Summary
This article describes the Windows PowerShell changes that are included in Cumulative Update 4 (CU4) for Microsoft System Center 2012 R2 Configuration Manager. Other CU4 fixes are described in the following Microsoft Knowledge Base article:

3026739 Description of Cumulative Update 4 for System Center 2012 R2 Configuration Manager

Issues that are fixed

  • Add-CMDeploymentType
    • When a deployment type is used that imports its information (such as AppV), the DeploymentTypeName parameter is ignored.
    • The WindowsPhoneStoreInstaller parameter creates incorrect deployment types. This is a regression from Cumulative Update 1.
    • Invalid locations can be specified incorrectly for the following deployment types: 
      • Windows Phone Store 
      • Google Play Store
      • Apple Store
    • You can configure the following as DownloadContentAsStreaming: 
      • MSI deployment 
      • Windows .appx type OnSlowNetworkMode values


  • Add-CMDeviceAffinityToUser

    User-device affinity for nonprimary users cannot be set on devices. For example, such users can be users who are discovered through Active Directory.

  • Add-CMDistributionPoint

    An expired CertificateExpirationTimeUtc can be specified.

  • Add-CMFallbackStatusPoint

    StateMessageNum values are not validated against the acceptable range (100 to 100,000).

  • Export-CMPackage

    Incorrect errors are reported when ExportFilePath is in an unexpected format.

  • Get-CMSoftwareUpdate

    The Id parameter that allows for querying for software updates by ID value is missing.

  • Get-CMStatusFilterRule

    No results are returned if the Name parameter is not specified.

  • Get-CMUser
    • Inconsistent object types are returned (SMS_CombinedUserResources or SMS_Collection-based object), depending on input parameters. This is a regression from the release version of System Center 2012 R2 Configuration Manager. See Get-CMUser notes in the "Breaking changes" section for more information about how this fix may affect you.
    • Non-user objects are matched when you use Name or ResourceId.
    • Not querying both "SMSID" and "Name" values for SMS_CombinedUserResource records. This is a regression from Cumulative Update 2.


  • Import-CMCertificate

    Unable to read certificate that is specified by the Path parameter. This is a regression from Cumulative Update 2.

  • New-CMActiveDirectoryForest

    Unable to create new Active Directory forest object. This is a regression from Cumulative Update 2.

  • New-CMBoundary

    No validation of the Value parameter against Type. This allows for invalid boundary configuration.

  • New-CMClientSetting

    Incorrect errors are reported when you create a client setting with a Type argument of "Default."

  • New-CMCollectionVariable

    Unable to add new variables to a collection that has pre-existing variables. This is a regression from Cumulative Update 2.

  • New-CMSecondarySite

    Expired CertificateExpirationTimeUtc can be specified.

  • Remove-CMDeviceCollection

    Allows for removal of non-device collection when you use it with InputObject or pipeline.

  • Remove-CMUserCollection

    Allows for removal of non-user collection when you use it with InputObject or pipeline.

  • Set-CMAssetIntelligenceSynchronizationPoint

    Unable to clear Asset Intelligence proxy certificate by setting CertificateFile to "$null."

  • Set-CMBoundary

    The Value parameter is not validated for correct syntax based on the boundary type or Type parameter. This allows for invalid boundary configuration.

  • Set-CMClientPushInstallation

    Successive cmdlet executions fail after you run this cmdlet.

  • Set-CMDeploymentType
    • Cmdlet will silently fail if trying to set a deployment type that does not exist in an application.
    • Allows for configuring an MSI deployment or Windows .appx type OnSlowNetworkMode value as DownloadContentAsStreaming.
    • Cmdlet will silently fail if trying to change a deployment type installer that is not recognized by the cmdlet.


  • Set-CMDeviceCollection

    Allows for configuration of non-device collection when you use it with InputObject or pipeline.

  • Set-CMDistributionPoint
    • Expired CertificateExpirationTimeUtc can be specified.
    • AllowFallbackForContent value does not apply to distribution point.


  • Set-CMFileReplicationRoute

    FileReplicationAccountName does not validate user name correctly in some circumstances.

  • Set-CMStateMigrationPoint

    AllowFallbackForContent value does not apply to state migration point.

  • Set-CMSystemHealthValidatorPointComponent

    Unable to clear Active Directory publishing or query accounts by setting null or empty value for PublishAccount and QueryAccount.

  • Set-CMUserCollection

    Allows for configuration of non-user collection when you use it with InputObject or pipeline.

  • Start-CMDistributionPointUpgrade

    Expired CertificateExpirationTimeUtc can be specified.

  • Update-CMCertificate

    Unable to read certificate specified by the Path parameter. This is a regression from Cumulative Update 2.

Additional changes

New cmdlets

  • Add-CMDeploymentTypeDependency

    Adds a deployment type as a dependency to a dependency group. Required input is a deployment type object from Get-CMDeploymentType and a dependency group from [Get|New]-CMDeploymentTypeDependencyGroup.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    New-CMDeploymentTypeDependencyGroup -GroupName MyGroup |
    Add-CMDeploymentTypeDependency -DeploymentTypeDependency `
    (Get-CMDeploymentType -ApplicationName MyChildApp) `
    -IsAutoInstall $true


  • Add-CMDeploymentTypeSupersedence

    Sets one deployment type to supersede another. Required input is a superseding type from Get-CMDeploymentType and superseded deployment type from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Add-CMDeploymentTypeSupersedence -SupersedingDeploymentType `
    (Get-CMDeploymentType -ApplicationName MySupersedingApp)


  • ConvertFrom-CMApplication

    Converts an AppMgmt SDK "Application" object into an SMS_Application object for insert into the SMS Provider. Notice that this only creates an SMS_Application instance. It is up to the calling code to actually insert it into WMI.

    Example

    $app = Get-CMApplication -Name MyApp |ConvertTo-CMApplication# (placeholder code to make changes against $app object)$obj = ConvertFrom-CMApplication -Application $app$obj.Put()



  • ConvertFrom-CMConfigurationItem

    Converts a DCM Object Model SDK ConfigurationItem or derived object to XML string.

    Example

    $rule = Get-CMConfigurationItem | ConvertTo-CMConfigurationItem$xml = ConvertFrom-CMConfigurationItem -ConfigurationItem $rule


  • ConvertTo-CMApplication

    Converts an SMS_Application or SMS_DeploymentType into an AppMgmt SDK "Application" object. Can be converted back into an "SMS_Application" by using the ConvertFrom-CMApplication cmdlet.

    Example

    $app = Get-CMApplication -Name MyApp | ConvertTo-CMApplication


  • ConvertTo-CMConfigurationItem

    Converts a CI-based object from the SMS Provider or XML string to a DCM Object Model SDK object derived from ConfigurationItem.

    Example

    Get-CMConfigurationItem | ConvertTo-CMConfigurationItem


  • Get-CMCertificate

    Get certificates stored for the site. These can be ISV Proxy, boot media, or distribution point certificates. Output of this cmdlet can be pipelined into other Certificate cmdlets such as Block-CMCertificate. Notice that queries that are made by using Thumbprint may be slower than other queries, especially with large result sets.

    Example

    $bootmedia = Get-CMCertificate -CertificateType BootMedia

  • Get-CMDeploymentTypeDependency

    Gets existing dependent deployment types from a dependency group. Required input is a dependency group object from Get-CMDeploymentTypeDependencyGroup.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Get-CMDeploymentTypeDependencyGroup -GroupName MyGroup |
    Get-CMDeploymentTypeDependency

  • Get-CMDeploymentTypeDependencyGroup

    Gets an existing deployment type dependency group. Can be changed by using Add-CMDeploymentTypeDependency or Remove-CMDeploymentTypeDependency. Required input is a deployment type object from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Get-CMDeploymentTypeDependencyGroup

  • Get-CMDeploymentTypeSupersedence

    Gets supersedences for a superseded deployment type. Required input is a superseded deployment type.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Get-CMDeploymentTypeSupersedence

  • Get-CMMigrationSource

    Gets information for a migrated source hierarchy. Can be used with Sync-CMMigrationSource to view the status of migration.

    Example

    Get-CMMigrationSource | select Status

  • Get-CMObjectSecurityScope

    Gets all security scopes associated with the specified InputObject. This can be used on any object that uses security scopes.

    Example

    Get-CMSoftwareUpdateGroup | Get-CMObjectSecurityScope
    Get-CMBoundaryGroup | Get-CMObjectSecurityScope

  • Get-CMQuery

    Gets a query.

    Example

    Get-CMQuery -Name "All Personal Devices"

  • Get-CMSiteDefinition

    Gets site definition information from SMS_SiteDefinition class. This contains various site-wide and configuration settings.

    Example

    Get-CMSiteDefinition -SiteCode PRI

  • Get-CMSiteRole

    Gets a list of site roles from a site server or site servers.

    Example

    Get-CMSiteRole -SiteSystemServerName myserver.contoso.com

  • Get-CMSupportedPlatforms

    Gets a list of supported platforms. Can be used for pipelining into Import-CMDriver.

    Example

    Get-CMSupportedPlatforms -Name 'All Windows*'

  • Invoke-CMQuery

    Invokes a query and returns the results.

    Example

    Get-CMQuery -Name "My Systems" | Invoke-CMQuery

  • Invoke-CMSystemDiscovery

    Instructs site to start Active Directory system discovery as soon as possible.

    Example

    Invoke-CMSystemDiscovery -SiteCode ABC

  • Invoke-CMUserDiscovery

    Instructs site to start Active Directory user discovery as soon as possible.

    Example

    Invoke-CMUserDiscovery -SiteCode ABC

  • Invoke-GroupDiscovery

    Instructs site to start Active Directory group discovery as soon as possible.

    Example

    Invoke-CMGroupDiscovery -SiteCode ABC

  • New-CMADGroupDiscoveryScope

    Creates an object that can be used to configure an active directory group discovery scope together with Set-CMDiscoveryMethod.

    Example

    Set-CMDiscoveryMethod -ActiveDirectoryGroupDiscovery `
    -AddGroupDiscoveryScope (New-CMADGroupDiscoveryScope `
    -name MyScope -SiteCode R2s -LdapLocation `
    "LDAP://CN=ScopeLocation,DC=contoso,DC=com"-RecursiveSearch $true)

  • New-CMDeploymentTypeDependencyGroup

    Creates an abstract deployment type dependency group. Must be added to an existing deployment type by using Add-CMDeploymentTypeDependency. Required input is a deployment type object from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    New-CMDeploymentTypeDependencyGroup -GroupName MyGroup

  • New-CMEmbeddedObjectInstance

    For advanced use cases in which you have to directly manipulate result objects from the SMS Provider or from object queries. Creates a new embedded object of an ad hoc class. Notice that for "SMS_EmbeddedProperty" or "SMS_EmbeddedPropertyList" types, there is New-CMEmbeddedProperty and New-CMEmbeddedPropertyList.

    Example

    $prop = New-CMEmbeddedObjectInstance -ClassName "SMS_EmbeddedProperty"

  • New-CMEmbeddedProperty

    For advanced use cases in which you have to directly manipulate results from the SMS Provider or from object queries. Creates a new SMS_EmbeddedProperty instance and can also set values.

    Example

    $dp = Get-CMDistributionPoint -SiteSystemServerName mydp001.contoso.com $embeddedProperty = New-CMEmbeddedProperty -PropertyName "UpdateBranchCacheKey" -Value 1 $props = $dp.EmbeddedProperties $props["UpdateBranchCacheKey"] = $embeddedProperty $dp.EmbeddedProperties = $props $dp.Put()

  • New-CMEmbeddedPropertyList

    For advanced use cases in which you have to directly manipulate results objects from the SMS Provider or from object queries. Creates a new SMS_EmbeddedPropertyList instance and can also set values.

    Example

    $propList = New-CMEmbeddedPropertyList -PropertyListName MyList -Values ("abc", "def", "xyz")

  • New-CMQuery

    Creates a new query.

    Example

    New-CMQuery -Name "My Systems" -Expression `
    "select * from SMS_R_System where Name LIKE 'ABC%'

  • Remove-CMCollection

    Removes an invariant collection by value, can be used instead of Remove-CMUserCollection and Remove-CMDeviceCollection for collection removal.

    Example

    Get-CMUserCollection -Name MyCollection | Remove-CMCollection -Force
    Get-CMDeviceCollection -Name MyDeviceCollection |
    Remove-CMCollection -Force

  • Remove-CMDeploymentTypeDependency

    Removes a deployment type dependency from a deployment type dependency group. If removing a dependency causes the group to have no more dependencies, the group will be removed. Required input is a deployment type object from Get-CMDeploymentType or Get-CMDeploymentTypeDependency and a dependency group from Get-CMDeploymentTypeDependencyGroup.

    Example

    $dpGroup = Get-CMDeploymentType -ApplicationName MyApp |
    Get-CMDeploymentTypeDependencyGroup -GroupName MyGroup `
    $dpDeps = Get-CMDeploymentTypeDependency -Group $dpGroup
    Remove-CMDeploymentTypeDependency -Group $dpGroup `
    -DeploymentTypeDependency $dpDeps[1] -Force

  • Remove-CMDeploymentTypeDependencyGroup

    Removes a deployment type dependency group (and its dependencies) from a deployment type. Required input is a dependency group from Get-CMDeploymentTypeDependencyGroup.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Get-CMDeploymentTypeDependencyGroup -GroupName MyGroup |
    Remove-CMDeploymentTypeDependencyGroup -Force

  • Remove-CMDeploymentTypeSupersedence

    Removes a superseding deployment type from a superseded deployment type. Required input is a superseding type from Get-CMDeploymentType or Get-CMDeploymentTypeSupersedence and superseded deployment type from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Remove-CMDeploymentTypeSupersedence -SupersedingDeploymentType `
    (Get-CMDeploymentType -ApplicationName MySupersedingApp)

  • Remove-CMQuery

    Removes a query.

    Example

    Get-CMQuery -Name "My Systems" | Remove-CMQuery -Force

  • Set-CMDeploymentTypeDependencyGroup

    Configures settings for a deployment type group. Required input is a dependency group from Get-CMDeploymentTypeDependencyGroup.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Get-CMDeploymentTypeDependencyGroup -GroupName MyGroup |
    Set-CMDeploymentTypeDependencyGroup -NewName MyNewGroup

  • Set-CMDeploymentTypeSupersedence

    Configures settings for a deployment type supersedence. Required input is a superseding type from Get-CMDeploymentType or Get-CMDeploymentTypeSupersedence and superseded deployment type from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName MyApp |
    Set-CMDeploymentTypeSupersedence -SupersedingDeploymentType `
    (Get-CMDeploymentType -ApplicationName MySupersedingApp) `
    -IsUninstall $true

  • Set-CMQuery

    Configures a query.

    Example

    Get-CMQuery -Name "My Systems" |
    Set-CMQuery -NewName "My ABC Systems"

  • Sync-CMMigrationSource

    Starts a synchronization for a migrated source hierarchy.

    Example

    Sync-CMMigrationSource

Nonbreaking changes

These changes represent improvements to existing cmdlets. These are additive changes and should not cause compatibility problems for existing Automation.
  • Add-CMDeploymentType
    • New optional parameter for requirements rules: AddRequirement. Rules must be created by using the DCM Object Model SDK.
    • New optional parameter: Application. Accepts input from Get-CMApplication as an alternative for ApplicationName.


  • Add-CMDistributionPoint

    New EnableBranchCache parameter added to enable branch cache for new distribution point.

  • Add-CMFallbackStatusPoint

    ThrottleInterval and StateMessageNum parameters are no longer mandatory. Default values will be used for ThrottleInterval (3,600) and StateMessageNum (10,000) if no values are defined.

  • Block-CMCertificate

    New Certificate parameter to allow for pipelining object from Get-CMCertificate.

  • Clear-CMClientOperation

    New optional Operation parameter that accepts input from Get-CMClientOperation.

  • Disable-CMStatusFilterRule

    The Name parameter now accepts wildcard values.

  • Enable-CMStatusFilterRule

    The Name parameter now accepts wildcard values.

  • Export-CMSecurityRole

    Additional support for exporting security roles by name (RoleName) or by value (Role).

  • Get-CMAppV5XDeploymentTypeItem

    Now accepts pipelined input from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName "MyApp" `
    -DeploymentTypeName "AppV5X" | Get-CMAppV5XDeploymentTypeItem

  • Get-CMClientPushInstallation

    No longer requires a mandatory search parameter for finding client push installation details.

  • Get-CMDeploymentType

    Can pipeline result object from Get-CMApplication to get deployment types.

    Example

    Get-CMApplication -Name "Contoso App" |
    Get-CMDeploymentType s-Name "MSI Installer"

  • Get-CMManagementPointComponent

    No longer requires mandatory SiteCode and SiteSystemName parameters.

  • Get-CMSoftwareUpdate

    New optional OnlyExpired parameter to scope query to only get expired updates for faster queries.

  • Get-CMStatusFilterRule

    The Name parameter now accepts wildcard values.

  • Get-CMUser

    Performance improvements with large result sets.

  • Import-CMComputerInformation

    SmBiosId and MacAddress can be defined when you use ComputerName instead of both being required. If neither is defined, the cmdlet will fail.

  • Import-CMDriver
    • New optional ImportFolder parameter to indicate that all drivers in the folder that is specified by using UncFileLocation should be processed.
    • New optional SupportedPlatforms parameter that accepts input from Get-CMSupportedPlatforms for setting a driver's supported platforms.


  • Lock-CMObject

    Now accepts objects through pipeline.

    Example

    Get-CMDriverPackage | Lock-CMObject

  • New-CMApplication

    New optional DisplaySupersedencesInApplicationCatalog parameter toggles the ability to display supersedences in the application catalog.

  • New-CMMaintenanceWindow

    New optional Collection parameter accepts input from Get-CMCollection.

  • New-CMSecondarySite

    New EnableBranchCache parameter added to enable branch cache for secondary site distribution point.

  • Remove-CMApplicationRevisionHistory

    Accepts pipelined input from Get-CMApplicationRevisionHistory for removing a specific application revision.

    Example

    Get-CMApplicationRevisionHistory -Name "Contoso App" -Revision 2 |
    Remove-CMApplicationRevisionHistory

  • Remove-CMClientOperation

    New optional Operation parameter accepts input from Get-CMClientOperation.

  • Remove-CMDeployment

    New optional Deployment parameter accepts an object from Get-CMDeployment that allows for deleting update, package, operating system, and application deployments.

    Note DeploymentId and ApplicationName will continue to support only application deployments. This behavior is subject to change in a future release.

  • Remove-CMDeploymentType

    The ApplicationName parameter is no longer required when you use DeploymentType or pipeline from Get-CMDeploymentType.

  • Remove-CMMaintenanceWindow

    New optional Collection parameter accepts input from Get-CMCollection.

  • Remove-CMStatusFilterRule

    The Name parameter now accepts wildcard values.

  • Set-ClientPushInstallation

    Now supports pipelining from Get-CMClientPushInstallation.

  • Set-CMApplication

    New optional DisplaySupersedencesInApplicationCatalog parameter toggles the ability to display supersedences in the application catalog.

  • Set-CMDeploymentType
    • New optional parameters for requirements rules:
      • AddRequirement
      • RemoveRequirement
      • ClearRequirements
      Rules must be created by using the DCM Object Model SDK.
      NoteRemoveRequirement input must match the RuleId value of the requirement rule in the deployment type. Otherwise, it will not be removed.
    • ApplicationName is no longer a required parameter if a DeploymentType input object is used.
    • Now supports pipelining from Get-CMDeploymentType.

    Example

    Get-CMDeploymentType -ApplicationName sccmapp `
    -DeploymentTypeName adberdr934_4.6.33.315 |
    Set-CMDeploymentType -AppV5xInstaller -OnSlowNetworkMode DoNothing

  • Set-CMDiscoveryMethod
    • New optional parameters when you configure group discovery with ActiveDirectoryGroupDiscovery:
      • AddGroupDiscoveryScope 
      • RemoveGroupDiscoveryScope
       
    • AddGroupDiscoveryScope requires input that is created by the New-CMADGroupDiscoveryScope cmdlet.
    • RemoveGroupDiscoveryScope requires string matching scope name.


    Example

    Set-CMDiscoveryMethod -ActiveDirectoryGroupDiscovery `
    -AddGroupDiscoveryScope (New-CMADGroupDiscoveryScope `
    -name MyScope -SiteCode R2S -LdapLocation `
    "LDAP://CN=ScopeLocation,DC=contoso,DC=com"  -RecursiveSearch $true)

  • Set-CMDistributionPoint

    New EnableBranchCache parameter added to configure branch cache on distribution point.

  • Set-CMMaintenanceWindow

    New optional Collection parameter accepts input from Get-CMCollection.

  • Set-CMManagementPointComponent

    Now accepts pipelined input from the following cmdlets:
    • Get-CMSiteDefinition (new cmdlet)
    • Get-CMManagementPoint
    • Get-CMSite
    • Get-CMManagementPointComponent
     

  • Set-CMPackage
    • New optional parameters for changing distribution (prestage, multicast) and data source (package update) properties to match admin console property sheets.
    • Renamed several parameters for clarity and consistency. These newly named parameters are aliased to the old names to preserve compatibility.


  • Unblock-CMCertificate

    New Certificate parameter allows for pipelining object from Get-CMCertificate.

  • Unlock-CMObject

    Now accepts objects through pipeline.

    Example

    Get-CMDriverPackage | Unlock-CMObject


  • Update-CMCertificate
    • The new optional Force parameter prevents prompting for overwriting existing certificate.
    • The new Certificate parameter allows for pipelining object from Get-CMCertificate.

Important information for all cmdlets
The new optional parameters DisableWildcardHandling and ForceWildcardHandling-DisableWildcardHandling allow for cmdlets and parameters that support wildcard ("*" or "?") values to forcibly parse the parameter as a literal value instead of a wildcard value.

Consider the following scenario: You have two applications: "My IT Application" and "My*Application." The cmdlet Get-CMApplication -Name My*Application will return both "My IT Application" and "My*Application." If the intent is to retrieve only "My*Application," you can add DisableWildcardHandling to the cmdlet parameters to retrieve a match.
  • The ForceWildcardHandling parameter restores pre-R2 CU1 behavior and allows for many string-based cmdlet parameter arguments to be recognized as wildcard values instead of literal values. This parameter may cause cmdlets to behave in unexpected or unsupported ways and should be used with great care.
  • A warning message will be written to the PowerShell output stream when internal query behavior is being changed by these parameters.
  • Notice that, although all Configuration Manager cmdlets support these new parameters, the parameters may not be used or honored in all circumstances.
  • The DisableWildcardHandling and ForceWildcardHandling parameters cannot be used at the same time. If you use both parameters at the same time, cmdlet execution fails.


Other significant nonbreaking changes
  • Improved logging when Verbose is enabled around SMS Provider object creation, modification, removal, and saving.
  • Improved efficiency of site system user account queries.
  • The use of a deprecated cmdlet or parameter may cause a warning to be written to the Windows PowerShell console. Deprecated cmdlets or parameters may be removed in a future release, and their use should be discontinued as soon as possible.


Deprecated cmdlets and parameters (may be removed in the future)

The use of these deprecated parameters should be discontinued as soon as possible to avoid possibly breaking changes in a future release.

Note The use of a deprecated cmdlet or parameter may cause a warning to be written to the Windows PowerShell console.
  • Add-CMDeploymentType
    • The ForceForUnknownPublisher parameter is no longer used when you create the following deployment types: 
      • Apple Store 
      • Windows Phone 8 
      • Google Play
    • The AutoIdentifyFromInstallationFile parameter is no longer used when you create the following deployment types: 
      • Application Virtualization 5 
      • Web App 
      • Apple Store 
      • Windows Phone 8 
      • Google Play
    • The AutoIdentifyFromInstallationFile parameter is no longer required for several deployment types.
    • The ForceForUnknownPublisher parameter is no longer required.
    • The ManualSpecifyDeploymentType parameter is no longer required and does not affect deployment type creation.


  • Get-CMClientOperations

    Replaced by Get-CMClientOperation (singular vs. plural naming) for consistency with other Verb-CMClientOperation cmdlets. There is no change in functionality.

  • Get-CMManagementPointComponent

    Replaced by the Get-CMSiteDefinition cmdlet. This cmdlet is functionally the same as Get-CMManagementPoint and is being deprecated to eliminate confusion.

  • Import-CMDriver

    SupportedPlatformName is deprecated. SupportedPlatforms should be used instead. SupportedPlatforms values can be retrieved by using the Get-CMSupportedPlatform cmdlet. It is not supported to use both SupportedPlatformName and SupportedPlatforms.

  • Remove-CMDeploymentType

    The ApplicationName parameter is no longer required when you use DeploymentType or pipeline from Get-CMDeploymentType.

  • Set-CMAssetIntelligenceSynchronizationPoint

    The EnableSynchronization parameter is deprecated. Set ScheduleToken to $null to disable scheduled synchronization.

  • Set-CMClientPushInstallation

    The Name parameter should not be used. SiteCode should be used instead to scope the output to a specific site.

  • Set-CMDeploymentType

    OnFastNetworkMode value RunFromNetwork is replaced by DownloadContentForStreaming.

  • Set-CMSystemHealthValidatorPoint

    The Date and Time parameters are deprecated instead of the StatementOfHealthStartTime parameter.

  • Start-CMPackageDeployment
    • DeploymentStartDay and DeploymentStartTime are replaced with single-purpose DeploymentStartDateTime to set both the date and time.
    • DeploymentAvailableDay and DeploymentAvailableTime are replaced with single-purpose DeploymentAvailableDateTime to set both the date and time.
    • DeploymentExpireDay and DeploymentExpireTime are replaced with single-purpose DeploymentExpireDateTime to set both the date and time.



Important The use of the SecuredScopeNames parameter in supported cmdlets should be discontinued, and Get-CMObjectSecurityScope should be used instead.

Breaking changes

Breaking changes are modifications to cmdlet behavior or parameters that may cause incompatibilities with existing PowerShell Automation. Verify the changes here against your existing Automation to make sure of compatibility.
  • Add-CMDeploymentType

    Cmdlet will no longer let you add a deployment type that has the same display name as a previously added deployment type. Deployment type names must be unique.

  • Block-CMCertificate

    If there is an error in blocking the certificate, the cmdlet will now fail instead of printing a warning message.

  • Get-CMSoftwareUpdateGroup

    The nonfunctional SecuredScopeNames parameter is removed.

  • Get-CMUser

    In Cumulative Update 1, Get-CMUser had an unexpected behavioral change where it would return either SMS_CombinedUserResource or SMS_Collection-based objects. The behavior of the release version of System Center 2012 R2 Configuration Manager was to return only SMS_Collection-based objects. This is corrected. The same data is in both classes because SMS_CombinedUserResource contains a subset of the SMS_Collection data. Therefore, this should not break Automation. However, this is being disclosed for awareness.

  • Remove-CMSoftwareUpdateGroup

    The nonfunctional SecuredScopeNames parameter is removed.

  • Remove-CMUser

    If a user cannot be removed for any reason, cmdlet will fail. In previous releases certain conditions would cause the cmdlet to silently fail.

  • Set-CMBootImage

    The following nonapplicable parameters will cause the cmdlet to fail if you use them with a Windows PE 3.1 or earlier boot image:
    • EnablePrestartCommand
    • PrestartCommandLine
    • IncludeFilesForPrestart
    • PrestartIncludeFilesDirectory
    • BackgroundBitmapPath
    • ScratchSpace
    • EnableCommandSupport
    • PersistContentInCache
    • EnableBinaryDeltaReplication
    • DeployFromPxeDistributionPoint
    • DistributionPointUpdateSchedule
    • CustomPackageShareName
    • DisconnectUsersFromDistributionPoints
    • DisconnectUsersFromDistributionPointsRetries
    • DisconnectUsersFromDistributionPointsMinutes
    • AddOptionalComponents
    • RemoveOptionalComponents
    • CopyPackageToShareOnDistributionPoints


  • Set-CMBoundary

    No longer enables multiple input values for Id or Name.

    Workaround

    Use loops or pipeline from Get-CMBoundary.

  • Set-CMSoftwareUpdateGroup

    The nonfunctional SecuredScopeNames parameter is removed.

  • Set-CMSoftwareUpdatePointComponent

    Cmdlet will fail if setting SynchronizeAction to SynchronizeFromAnUpstreamDataSourceLocation without specifying a value for UpstreamSourceLocation.

  • Start-CMSoftwareUpdateDeployment

    Cmdlet will fail instead of warn if software updates are not yet downloaded.


Other significant breaking changes
Many cmdlets had configured incorrectly "ValueFromPipelineByPropertyName" for parameters. This is corrected. Although it is unlikely any existing Automation would have been taking advantage of this, we are noting this for awareness.

Known issues

The following known issues with cmdlets are not resolved in this release.
  • Set-CMAlertSubscription

    The LocaleId parameter requires that the specific locale be present on the system instead of being a valid locale.

  • Set-CMDeploymentType

    Cannot configure content settings for the following deployment types:
    • Windows Phone  
    • Apple App Store  
    • Google Play


  • New-CMVhd

    Cmdlet returns a "Not Found" error when you try to locate a Task Sequence package reference. This is a regression from Cumulative Update 2.

  • Get-CMAccessAccount

    UserName performs a case-sensitive match when querying the SMS Provider.

  • Set-CMSoftwareUpdatePoint

    The DefaultWsusServer parameter changes do not apply to WSUS configuration for a Software Update Point.

  • Set-CMBootImage

    The EnablePrestartCommand and PrestartCommandLine values are not applied to the boot image.

  • Add-CMManagementPoint

    Management point that is created by the cmdlet cannot be viewed in the admin console.

    Workaround

    $mp = get-cmmanagementpoint -SiteSystemServerName yourmanagementpointfqdn
    $props = $mp.EmbeddedProperties
    $ep = $mp.ConnectionManager.CreateEmbeddedObjectInstance("SMS_EmbeddedProperty")
    $ep.PropertyName = "Authentication type"
    $props.Remove("Authentication Type")
    $props.Add("Authentication type", $ep)
    $mp.EmbeddedProperties = $props
    $mp.Put()

  • Get-CMStatusReportingComponent

    Cmdlet may fail if you run it after you run Set-CMStatusReportingComponent.

  • Start-CMSoftwareUpdateDeployment

    Cmdlet will fail if update requires accepting the Microsoft Software License Terms.

  • New-CMVhd

    Cmdlet may fail with an "Object not found" error when you create a new VHD.

  • Set-CMOutOfBandManagementComponent

    Cmdlet may fail if the EnrollmentPoint parameter is used.

  • Add-CMStateMigrationPoint

    AllowFallbackSourceLocationForContent changes may not apply to state migration point role.

  • Add-CMOutOfBandServicePoint

    ThreadsOffset value may not apply to the newly created Out of Band Service Point.

    Workaround

    Use Set-CMOutOfBandServicePoint -TransmissionStartMinutesInterval after you run Add-CMOutOfBandServicePoint.

References
Learn about the terminology that Microsoft uses to describe software updates.
Properties

Article ID: 3031717 - Last Review: 02/02/2015 22:55:00 - Revision: 1.0

Microsoft System Center 2012 R2 Configuration Manager

  • kbqfe kbfix kbsurveynew kbexpertiseinter KB3031717
Feedback