Applies To
Microsoft 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-CMDeviceAffinityToUserUser-device affinity for nonprimary users cannot be set on devices. For example, such users can be users who are discovered through Active Directory.

  • Add-CMDistributionPointAn expired CertificateExpirationTimeUtc can be specified.

  • Add-CMFallbackStatusPointStateMessageNum values are not validated against the acceptable range (100 to 100,000).

  • Export-CMPackageIncorrect errors are reported when ExportFilePath is in an unexpected format.

  • Get-CMSoftwareUpdateThe Id parameter that allows for querying for software updates by ID value is missing.

  • Get-CMStatusFilterRuleNo 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-CMCertificateUnable to read certificate that is specified by the Path parameter. This is a regression from Cumulative Update 2.

  • New-CMActiveDirectoryForestUnable to create new Active Directory forest object. This is a regression from Cumulative Update 2.

  • New-CMBoundaryNo validation of the Value parameter against Type. This allows for invalid boundary configuration.

  • New-CMClientSettingIncorrect errors are reported when you create a client setting with a Type argument of "Default."

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

  • New-CMSecondarySiteExpired CertificateExpirationTimeUtc can be specified.

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

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

  • Set-CMAssetIntelligenceSynchronizationPointUnable to clear Asset Intelligence proxy certificate by setting CertificateFile to "$null."

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

  • Set-CMClientPushInstallationSuccessive 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-CMDeviceCollectionAllows 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-CMFileReplicationRouteFileReplicationAccountName does not validate user name correctly in some circumstances.

  • Set-CMStateMigrationPointAllowFallbackForContent value does not apply to state migration point.

  • Set-CMSystemHealthValidatorPointComponentUnable to clear Active Directory publishing or query accounts by setting null or empty value for PublishAccount and QueryAccount.

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

  • Start-CMDistributionPointUpgradeExpired CertificateExpirationTimeUtc can be specified.

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

Additional changes

New cmdlets

  • Add-CMDeploymentTypeDependencyAdds 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-CMDeploymentTypeSupersedenceSets 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-CMApplicationConverts 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-CMConfigurationItemConverts a DCM Object Model SDK ConfigurationItem or derived object to XML string.Example

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

  • ConvertTo-CMApplicationConverts 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-CMConfigurationItemConverts 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-CMCertificateGet 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-CMDeploymentTypeDependencyGets 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-CMDeploymentTypeDependencyGroupGets 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-CMDeploymentTypeSupersedenceGets supersedences for a superseded deployment type. Required input is a superseded deployment type.Example

    Get-CMDeploymentType -ApplicationName MyApp |Get-CMDeploymentTypeSupersedence

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

    Get-CMMigrationSource | select Status

  • Get-CMObjectSecurityScopeGets all security scopes associated with the specified InputObject. This can be used on any object that uses security scopes.Example

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

  • Get-CMQueryGets a query.Example

    Get-CMQuery -Name "All Personal Devices"

  • Get-CMSiteDefinitionGets site definition information from SMS_SiteDefinition class. This contains various site-wide and configuration settings.Example

    Get-CMSiteDefinition -SiteCode PRI

  • Get-CMSiteRoleGets a list of site roles from a site server or site servers.Example

    Get-CMSiteRole -SiteSystemServerName myserver.contoso.com

  • Get-CMSupportedPlatformsGets a list of supported platforms. Can be used for pipelining into Import-CMDriver.Example

    Get-CMSupportedPlatforms -Name 'All Windows*'

  • Invoke-CMQueryInvokes a query and returns the results.Example

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

  • Invoke-CMSystemDiscoveryInstructs site to start Active Directory system discovery as soon as possible.Example

    Invoke-CMSystemDiscovery -SiteCode ABC

  • Invoke-CMUserDiscoveryInstructs site to start Active Directory user discovery as soon as possible.Example

    Invoke-CMUserDiscovery -SiteCode ABC

  • Invoke-GroupDiscoveryInstructs site to start Active Directory group discovery as soon as possible.Example

    Invoke-CMGroupDiscovery -SiteCode ABC

  • New-CMADGroupDiscoveryScopeCreates 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-CMDeploymentTypeDependencyGroupCreates 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-CMEmbeddedObjectInstanceFor 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-CMEmbeddedPropertyFor 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-CMEmbeddedPropertyListFor 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-CMQueryCreates a new query.Example

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

  • Remove-CMCollectionRemoves 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 -ForceGet-CMDeviceCollection -Name MyDeviceCollection |Remove-CMCollection -Force

  • Remove-CMDeploymentTypeDependencyRemoves 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 $dpGroupRemove-CMDeploymentTypeDependency -Group $dpGroup `-DeploymentTypeDependency $dpDeps[1] -Force

  • Remove-CMDeploymentTypeDependencyGroupRemoves 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-CMDeploymentTypeSupersedenceRemoves 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-CMQueryRemoves a query.Example

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

  • Set-CMDeploymentTypeDependencyGroupConfigures 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-CMDeploymentTypeSupersedenceConfigures 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-CMQueryConfigures a query.Example

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

  • Sync-CMMigrationSourceStarts 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-CMDistributionPointNew EnableBranchCache parameter added to enable branch cache for new distribution point.

  • Add-CMFallbackStatusPointThrottleInterval 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-CMCertificateNew Certificate parameter to allow for pipelining object from Get-CMCertificate.

  • Clear-CMClientOperationNew optional Operation parameter that accepts input from Get-CMClientOperation.

  • Disable-CMStatusFilterRuleThe Name parameter now accepts wildcard values.

  • Enable-CMStatusFilterRuleThe Name parameter now accepts wildcard values.

  • Export-CMSecurityRoleAdditional support for exporting security roles by name (RoleName) or by value (Role).

  • Get-CMAppV5XDeploymentTypeItemNow accepts pipelined input from Get-CMDeploymentType.Example

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

  • Get-CMClientPushInstallationNo longer requires a mandatory search parameter for finding client push installation details.

  • Get-CMDeploymentTypeCan pipeline result object from Get-CMApplication to get deployment types.Example

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

  • Get-CMManagementPointComponentNo longer requires mandatory SiteCode and SiteSystemName parameters.

  • Get-CMSoftwareUpdateNew optional OnlyExpired parameter to scope query to only get expired updates for faster queries.

  • Get-CMStatusFilterRuleThe Name parameter now accepts wildcard values.

  • Get-CMUserPerformance improvements with large result sets.

  • Import-CMComputerInformationSmBiosId 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-CMObjectNow accepts objects through pipeline.Example

    Get-CMDriverPackage | Lock-CMObject

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

  • New-CMMaintenanceWindowNew optional Collection parameter accepts input from Get-CMCollection.

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

  • Remove-CMApplicationRevisionHistoryAccepts pipelined input from Get-CMApplicationRevisionHistory for removing a specific application revision.Example

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

  • Remove-CMClientOperationNew optional Operation parameter accepts input from Get-CMClientOperation.

  • Remove-CMDeploymentNew 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-CMDeploymentTypeThe ApplicationName parameter is no longer required when you use DeploymentType or pipeline from Get-CMDeploymentType.

  • Remove-CMMaintenanceWindowNew optional Collection parameter accepts input from Get-CMCollection.

  • Remove-CMStatusFilterRuleThe Name parameter now accepts wildcard values.

  • Set-ClientPushInstallationNow supports pipelining from Get-CMClientPushInstallation.

  • Set-CMApplicationNew 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-CMDistributionPointNew EnableBranchCache parameter added to configure branch cache on distribution point.

  • Set-CMMaintenanceWindowNew optional Collection parameter accepts input from Get-CMCollection.

  • Set-CMManagementPointComponentNow 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-CMCertificateNew Certificate parameter allows for pipelining object from Get-CMCertificate.

  • Unlock-CMObjectNow 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-CMClientOperationsReplaced by Get-CMClientOperation (singular vs. plural naming) for consistency with other Verb-CMClientOperation cmdlets. There is no change in functionality.

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

  • Import-CMDriverSupportedPlatformName 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-CMDeploymentTypeThe ApplicationName parameter is no longer required when you use DeploymentType or pipeline from Get-CMDeploymentType.

  • Set-CMAssetIntelligenceSynchronizationPointThe EnableSynchronization parameter is deprecated. Set ScheduleToken to $null to disable scheduled synchronization.

  • Set-CMClientPushInstallationThe Name parameter should not be used. SiteCode should be used instead to scope the output to a specific site.

  • Set-CMDeploymentTypeOnFastNetworkMode value RunFromNetwork is replaced by DownloadContentForStreaming.

  • Set-CMSystemHealthValidatorPointThe 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-CMDeploymentTypeCmdlet 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-CMCertificateIf there is an error in blocking the certificate, the cmdlet will now fail instead of printing a warning message.

  • Get-CMSoftwareUpdateGroupThe nonfunctional SecuredScopeNames parameter is removed.

  • Get-CMUserIn 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-CMSoftwareUpdateGroupThe nonfunctional SecuredScopeNames parameter is removed.

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

  • Set-CMBootImageThe 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-CMBoundaryNo longer enables multiple input values for Id or Name.WorkaroundUse loops or pipeline from Get-CMBoundary.

  • Set-CMSoftwareUpdateGroupThe nonfunctional SecuredScopeNames parameter is removed.

  • Set-CMSoftwareUpdatePointComponentCmdlet will fail if setting SynchronizeAction to SynchronizeFromAnUpstreamDataSourceLocation without specifying a value for UpstreamSourceLocation.

  • Start-CMSoftwareUpdateDeploymentCmdlet 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-CMAlertSubscriptionThe LocaleId parameter requires that the specific locale be present on the system instead of being a valid locale.

  • Set-CMDeploymentTypeCannot configure content settings for the following deployment types:

    • Windows Phone

    • Apple App Store

    • Google Play

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

  • Get-CMAccessAccountUserName performs a case-sensitive match when querying the SMS Provider.

  • Set-CMSoftwareUpdatePointThe DefaultWsusServer parameter changes do not apply to WSUS configuration for a Software Update Point.

  • Set-CMBootImageThe EnablePrestartCommand and PrestartCommandLine values are not applied to the boot image.

  • Add-CMManagementPointManagement 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-CMStatusReportingComponentCmdlet may fail if you run it after you run Set-CMStatusReportingComponent.

  • Start-CMSoftwareUpdateDeploymentCmdlet will fail if update requires accepting the Microsoft Software License Terms.

  • New-CMVhdCmdlet may fail with an "Object not found" error when you create a new VHD.

  • Set-CMOutOfBandManagementComponentCmdlet may fail if the EnrollmentPoint parameter is used.

  • Add-CMStateMigrationPointAllowFallbackSourceLocationForContent changes may not apply to state migration point role.

  • Add-CMOutOfBandServicePointThreadsOffset value may not apply to the newly created Out of Band Service Point.WorkaroundUse Set-CMOutOfBandServicePoint -TransmissionStartMinutesInterval after you run Add-CMOutOfBandServicePoint.

References

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

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.