System Center Configuration
Manager Cmdlet Library
changes
1604 Update (build 1189)
Note: The 1601 version of the System Center Configuration Manager Cmdlet Library is the baseline for these
changes. This release replaces the previous 1604 release (build 1182).
This update applies to the following System Center Configuration Manager releases:
System Center 2012 Configuration Manager R2 SP1
System Center 2012 Configuration Manager SP2
System Center Configuration Manager Current Branch
Important changes
Remove-CM* cmdlets no longer terminate the pipeline if trying to remove an
object that does not exist
In previous releases, if trying to remove an object that does not exist, the pipeline would terminate. In this
release a change was made to this behavior to be consistent with PowerShell standards. If an object is not
found, an error is written but the pipeline does not terminate. To restore previous behavior, add -
ErrorAction Stop.
Configuration Manager console trace logging
The Cmdlet Library now has the ability to output Configuration Manager console framework trace logging for
additional troubleshooting details. This should only be used for troubleshooting purposes.
To enable this logging, set $CMPSAdminConsoleFxTrace = 1 and $DebugLogging = Continue. By
default, “Warning” and higher severity messages are logged when console trace logging is enabled. To
configure the logging level, set
[Microsoft.ConfigurationManagement.ManagementProvider.ConnectionManagerBase]::Sms
TraceSource.Switch.Level.
Detection and error reporting when passing an IResultObject value into a string
parameter
If a cmdlet detects that an IResultObject is passed to a parameter expecting a string value, it will now fail with
a clear error.
If this check reports a false positive, it can be disabled by setting $CMPSSkipParameterInputChecks=1.
Example
PR1:\> $c = Get-CMCollection -Name "All Systems"
PR1:\> Set-CMCollection -Name $c
Set-CMCollection : An IResultObject value was specified as value for a string
parameter. If supported by the cmdlet, this object may be pipelined. Otherwise a
specific object property must be specified as the parameter value.
Improved error reporting for permissions-related failures
Failures that occur in cmdlets due to missing or incorrect permissions will now report actionable errors.
Update check logic
In previous releases, the check for an updated version of the Cmdlet Library was performed on cmdlet
execution if a certain time limit had passed. This check now occurs only when a new CMDrive instance is
created. This change was made to reduce the number of warnings that may be written when there is an
update available. For more information on this feature and how to configure it, please see the
documentation at https://technet.microsoft.com/en-us/library/dn958404.
Get-CM* cmdlets may support “Fast” mode and may emit a warning if it is not
used
Some Get cmdlets now have a Fast parameter. This parameter allows the cmdlet to return objects without
automatically refreshing lazy properties. Retrieving lazy property values can cause additional network traffic
and can slow down cmdlet execution. If lazy properties are not used Fast should be supplied as a cmdlet
parameter.
To provide visibility into this change, cmdlets that support Fast will write a warning to the console if it is not
used in a case where its presence may be beneficial. This warning can be suppressed by setting
$CMPSSuppressFastNotUsedCheck = $true.
How to provide feedback or report issues
Many of the fixes and improvements described in this document are a result of customer feedback. To leave
feedback and bug reports, go to http://go.microsoft.com/fwlink/?LinkId=529220 (Microsoft Account is
required).
Known issues
These are known issues with the Cmdlet Library that are not resolved in this release.
Cmdlet Library installer
Repair does not fix <installdir>\bin\ConfigurationManager\ConfigurationManager.psd1 file.
Workaround
Uninstall and reinstall the Cmdlet Library
Add/Set-CMDeploymentType
AllowClientsToUseFallbackSourceForContent and OnSlowNetworkMode settings may not apply to
deployment type.
Workaround
Use technology-specific Add/Set-TechnologyNameDeploymentType cmdlet.
Add-CMIntuneSubscription
Cmdlet may fail with "Could not load file or assembly" errors if running on a build earlier than Configuration
Manager 1606.
Workaround
One or both of these workarounds may be necessary if running on a build earlier than Configuration Manager
1606.
Download the Active Directory Authentication Library (ADAL) SDK and copy the assemblies into the
<configurationmanagerconsole>\bin directory. It may be necessary to restart PowerShell.
Download Json.NET version 4.5.11 and copy the Newtonsoft.Json.dll assembly into the
<configurationmanagerconsole>\bin directory. It may be necessary to restart PowerShell.
New-CMApnsCertificateRequest
Cmdlet may fail with "Could not load file or assembly" errors if running on a build earlier than Configuration
Manager 1606.
Workaround
One or both of these workarounds may be necessary if running on a build earlier than Configuration Manager
1606.
Download the Active Directory Authentication Library (ADAL) SDK and copy the assemblies into the
<configurationmanagerconsole>\bin directory. It may be necessary to restart PowerShell.
Download Json.NET version 4.5.11 and copy the Newtonsoft.Json.dll assembly into the
<configurationmanagerconsole>\bin directory. It may be necessary to restart PowerShell.
New-CMDepTokenRequest
Cmdlet may fail with "Could not load file or assembly" errors if running on a build earlier than Configuration
Manager 1606.
Workaround
One or both of these workarounds may be necessary if running on a build earlier than Configuration Manager
1606.
Download the Active Directory Authentication Library (ADAL) SDK and copy the assemblies into the
<configurationmanagerconsole>\bin directory. It may be necessary to restart PowerShell.
Download Json.NET version 4.5.11 and copy the Newtonsoft.Json.dll assembly into the
<configurationmanagerconsole>\bin directory. It may be necessary to restart PowerShell.
Set-CMBaseline
When PassThru is used, an SMS_ConfigurationBaselineInfo object is not returned as expected.
Workaround
Use Get-CMBaseline after Set-CMBaseline to get the expected object.
Set-CMOutOfBandManagementComponent
CertificateTemplate parameter may not properly configure the template.
Wireless parameter may not configure the wireless profile correctly.
Workaround
None
New cmdlets
These are newly-added cmdlets for this release that add new functionality or enhance the functionality of
existing cmdlets.
Auto deployment rule deployment
Added new cmdlets for multiple auto deployment rule deployments:
Get-CMAutoDeploymentRuleDeployment
New-CMAutoDeploymentRuleDeployment
Remove-CMAutoDeploymentRuleDeployment
Set-CMAutoDeploymentRuleDeployment
These cmdlets require Configuration Manager 1511 or newer.
Certificate registration point
Added new cmdlets for configuring a certificate registration point site role:
Add-CMCertificateRegistrationPoint
Get-CMCertificateRegistrationPoint
Remove-CMCertificateRegistrationPoint
Set-CMCertificateRegistrationPoint
Example
Add-CMCertificateRegistrationPoint -SiteSystemServerName myserver.contoso.com -
Certificate "e:\mycert.cer"
Collection
Added new cmdlets for working with collections and collection members:
Invoke-CMCollectionUpdate (supersedes Invoke-CMUserCollectionUpdate and Invoke-
CMDeviceCollectionUpdate)
Get-CMResource
Get-CMCollectionMember
Get-CMCollectionSettings
Remove-CMResource
Added new cmdlets for configuring power management settings for a collection:
New-CMPowerManagementCustomPlan
Set-CMCollectionPowerManagement
These cmdlets require Configuration Manager 1603 or newer.
Conditional access
Added new cmdlets for configuring conditional access policies for on-premises Exchange:
Get-CMConditionalAccessPolicy
New-CMConditionalAccessPolicy
Remove-CMConditionalAccessPolicy
Set-CMConditionalAccessPolicy
These cmdlets require Configuration Manager 1602 or newer.
Hybrid management
These cmdlets require a valid Intune subscription. Unless noted otherwise, these cmdlets require
Configuration Manager 1511 or newer.
Added new cmdlets for remote lock and PIN reset (Configuration Manager 2012 SP2 and newer):
Get-CMDeviceAction
Invoke-CMDeviceAction
Added new cmdlets for configuring an Intune subscription:
Add-CMIntuneSubscription (see Known Issues)
Get-CMIntuneSubscription
Remove-CMIntuneSubscription
Set-CMIntuneSubscription
Added new cmdlets for configuring device support for an Intune subscription:
Set-CMIntuneSubscriptionAndroidProperty
Set-CMIntuneSubscriptionAppleDepProperty
Set-CMIntuneSubscriptionAppleMdmProperty (for iOS or OSX management)
Set-CMIntuneSubscriptionPassportForWorkProperty
Set-CMIntuneSubscriptionWindowsPhoneProperty
Set-CMIntuneSubscriptionWindowsProperty
Added new cmdlets for configuring device management enrollment managers:
Add-CMMdmEnrollmentManager
Get-CMMdmEnrollmentManager
Remove-CMMdmEnrollmentManager
Added new cmdlets for Apple device management key generation:
New-CMApnsCertificateRequest (see Known Issues)
New-CMDepTokenRequest (see Known Issues)
Service connection point
Added new cmdlets for configuring a service connection point:
Add-CMServiceConnectionPoint
Get-CMServiceConnectionPoint
Remove-CMServiceConnectionPoint
Set-CMServiceConnectionPoint
These cmdlets require Configuration Manager 1511 or newer.
Settings
Added new cmdlet for importing a wireless profile:
Import-CMWirelessConfigurationItem
Added new cmdlets for e-mail profile creation:
Get-CMEmailProfile
New-CMEmailProfile
Remove-CMEmailProfile
Set-CMEmailProfile
Added new cmdlets for certificate profile creation:
Get-CMCertificateProfilePfx
Get-CMCertificateProfileScep
Get-CMCertificateProfileTrustedRootCA
New-CMCertificateProfilePfx
New-CMCertificateProfileScep
New-CMCertificateProfileTrustedRootCA
Remove-CMCertificateProfilePfx
Remove-CMCertificateProfileScep
Remove-CMCertificateProfileTrustedRootCA
Set-CMCertificateProfilePfx
Set-CMCertificateProfileScep
Set-CMCertificateProfileTrustedRootCA
Added new cmdlets for user client certificate private key import:
Get-CMClientCertificatePfx
Import-CMClientCertificatePfx
Remove-CMClientCertificatePfx
SMS Provider query helpers
Added new cmdlets to simplify performing ad-hoc functions against the SMS Provider from the CMSite drive:
Invoke-CMWmiMethod
Invoke-CMWmiQuery
These cmdlets can perform functions directly against the SMS Provider without needing to specify
namespaces, credentials, or other configuration information.
Task sequence media creation
Added new cmdlets for creating task sequence media:
New-CMBootableMedia
New-CMCaptureMedia
New-CMPrestageMedia
New-CMStandaloneMedia
These cmdlets replace New-CMTaskSequenceMedia, which is now deprecated.
Windows 10 servicing plan
Added new cmdlets for configuring a Windows servicing plan:
Get-CMWindowsServicingPlan
New-CMWindowsServicingPlan
Remove-CMWindowsServicingPlan
Set-CMWindowsServicingPlan
These cmdlets require Configuration Manager 1511 or newer.
Cmdlet changes
These are changes that have been made to existing cmdlets for this release. Changes may be new
functionality, bug fixes, or deprecations, and may be breaking. If you use one of the cmdlets or feature areas
listed in this section, please carefully review the changes to understand how they may affect your use.
Miscellaneous changes
Bugs that were fixed
Site role cmdlets may not validate that a specified connection account user is valid and present in the site.
Some Application and Certificate cmdlets may silently fail if no matching results are found (regression from
Fall 2015 release).
Non-breaking changes
Performance improvements for Driver-related cmdlets.
Performance improvements for many Collection-related cmdlets.
Several cmdlets that worked with lockable objects (applications, software updates) were updated to ensure
proper locking and reporting. This includes the following cmdlet families: CMApplication,
CMSoftwareUpdate, CMBaseline, CMDriver, CMPackage, and CMTaskSequence.
Add-CMAppv5XDeploymentType
Bugs that were fixed
Publisher details are not being added to the deployment type.
Add-CMAppvDeploymentType
Bugs that were fixed
Publisher details are not being added to the deployment type.
Add-CMCollectionToAdministrativeUser
Bugs that were fixed
UserId parameter is not processed.
Add-CMEnrollmentProxyPoint
Bugs that were fixed
Enrollment proxy point may not be correctly configured.
Add-CMGooglePlayDeploymentType
Bugs that were fixed
Details for mobile application management may be missing from created deployment type on Current
Branch.
Add-CMManagementPoint
Bugs that were fixed
SqlServerFqdn parameter does not validate that a correct FQDN is used.
Add-CMIosDeploymentType
Bugs that were fixed
Details for mobile application management may be missing from created deployment type on Current
Branch.
Add-CMMsiDeploymentType
Non-breaking changes
New SourceUpdateProductCode parameter for setting the update product code.
New InstallationBehaviorType parameters for setting the interaction method of the deployment type.
Add-CMSoftwareUpdateToGroup
Non-breaking changes
Add support for adding multiple updates to a group.
Add-CMWindowsStoreDeploymentType
Bugs that were fixed
Cmdlet may fail with an unclear error on Configuration Manager 2012 sites if the DeploymentTypeName
parameter is not used.
Clear-CMPxeDeployment
Non-breaking changes
Added additional logging, and improved error handling when a failure occurs.
Performance improvements.
Copy-CMSecurityRole
Non-breaking changes
New NewRoleName parameter to specify an alternate role name if Overwrite is false.
Disable-CMTaskSequence
Deprecations
Cmdlet has been deprecated. Set-CMTaskSequence should be used to enable or disable a task sequence.
Enable-CMTaskSequence
Deprecations
Cmdlet has been deprecated. Set-CMTaskSequence should be used to enable or disable a task sequence.
Export-CMAntimalwarePolicy
Bugs that were fixed
Pipelined object may be disposed.
Export-CMSecurityRole
Non-breaking changes
New NewRoleName parameter to specify an alternate role name if Overwrite is false.
Get-CM*Component
Deprecations
SiteSystemServerName parameter.
Get-CMObjectSecurityScope
Bugs that were fixed
Cannot retrieve security scope for an application approval request.
Get-CMSiteRole
Non-breaking changes
Now supports getting site roles from a pipelined site system server object.
Get-CMSoftwareUpdateAutoDeploymentRule
Breaking changes
Cmdlet will no longer output Windows 10 servicing plans. To restore this behavior, either
add -IsServicingPlan $true, or use Get-CMWindowsServicingPlan.
Get-CMSoftwareUpdateLicense
Bugs that were fixed
Cmdlet may not return expected objects.
Non-breaking changes
Performance improvements.
Import-CMAntimalwarePolicy
Bugs that were fixed
Cmdlets may fail on Configuration Manager 1511 or newer with a “Not Found” error.
Import-CMComputerInformation
Non-breaking changes
SMBiosGuid parameter now accepts any valid GUID string format.
New UserName and UserAccountMigrationBehavior parameters to specify migration behavior for user
accounts when using SourceComputer.
Import-CMDriver
Bugs that were fixed
Returned object is not usable.
Import-CMSecurityRole
Non-breaking changes
New NewRoleName parameter to specify an alternate role name if Overwrite is false.
Invoke-CMContentValidation
Non-breaking changes
Performance improvements.
Invoke-CMQuery
Bugs that were fixed
Query execution does not honor “Limit to collection” setting and may return unexpected results.
Invoke-CMRemoteControl
Bugs that were fixed
SiteSystemServerName parameter fails to find a site system.
Cmdlet execution may fail if SiteCode parameter is not used.
Breaking changes
Cmdlet no longer accepts array values for SiteSystemRole, SiteCode, DeviceName, or DeviceId parameters.
Move-CMObject
Bugs that were fixed
Cmdlet may fail with an “Object not found” error.
New-CMBoundary
Bugs that were fixed
Cmdlet allows for creating boundaries with duplicate names.
New-CMBoundaryGroup
Non-breaking changes
Added support for configuring the site system servers associated with the boundary group.
New-CMConfigurationItem
Bugs that were fixed
Name is not a required parameter and will create an invalid configuration item if not used.
New-CMDeviceCollection
Bugs that were fixed
LimitingCollectionID is not validated to be a valid or existing collection.
New-CMOperatingSystemImageUpdateSchedule
Bugs that were fixed
Cmdlet may not properly configure the update schedule.
New-CMSecurityScope
Bugs that were fixed
Created security scope is not properly associated with the current user.
New-CMSoftwareUpdateAutoDeploymentRule
Bugs that were fixed
DeployWithoutLicense parameter may not configure the rule as expected.
Some rules may not be processed correctly.
Non-breaking changes
Performance improvements.
Support for additional update types.
New-CMSoftwareUpdateGroup
Non-breaking changes
Add support for adding updates to a group through the pipeline.
Add support for adding updates to a group by name.
New-CMTaskSequenceMedia
Bugs that were fixed
ExpirationDate and StartDate may not be correct in the created boot media.
Deprecations
This cmdlet is now deprecated. New task sequence media creation cmdlets can be used instead.
New-CMWirelessProfileConfigurationItem
Bugs that were fixed
Cmdlet may fail to create a new configuration item from a digest.
Out-CMSignedWindowsMobileCab
Bugs that were fixed
Cmdlet does not have any usable parameters.
Remove-CMAutoDeploymentRuleDeployment
Bugs that were fixed
Force parameter is missing.
Remove-CMCategory
Bugs that were fixed
Pipelined category object may be disposed.
Remove-CMContentDistribution
Non-breaking changes
Performance improvements.
Remove-CMDeployment
Bugs that were fixed
Pipelined deployment object may be disposed.
Remove-CMIntuneSubscription
Bugs that were fixed
Cmdlet does not properly remove an Intune subscription.
Remove-CMMaintenanceWindow
Non-breaking changes
Name parameter now supports wildcards.
Remove-CMUser
Bugs that were fixed
Cmdlet does not validate that the pipelined object is a user resource.
Non-breaking changes
Name parameter now supports “SMSID” (DOMAIN\user) format. In previous releases, only the “Name”
(DOMAIN\user (full name)) format was supported.
Set-CMAntimalwarePolicy
Bugs that were fixed
Cmdlets may fail on Configuration Manager 1511 or newer with a “Not Found” error.
Set-CMApplication
Non-breaking changes
Performance improvements.
Set-CMApplicationDeployment
Bugs that were fixed
AvailableDate/AvailableTime parameter values may not be processed.
Non-breaking changes
New CollectionId parameter
Set-CMBoundaryGroup
Non-breaking changes
Added support for configuring the site system servers associated with the boundary group.
Example
$siteServer = @{ "myserver.contoso.com" = "FastLink" }
$boundaryGroup | Set-CMBoundaryGroup –AddSiteSystemServer $siteServer
Set-CMClientSetting
Non-breaking changes
New UseNewSoftwareCenter parameter for enabling the new Software Center experience (Configuration
Manager 1511 and newer only).
Set-CMConditionalAccessPolicy
Bugs that were fixed
AddExcludedCollectionName, AddExcludedCollectionId, RemoveExcludedCollectionName, and
RemoveExcludedCollectionId parameters are not processed.
Set-CMDiscoveryMethod
Non-breaking changes
New Recursive, IncludeGroups, RemoveActiveDirectoryContainer, AddActiveDirectoryContainer
parameters for modifying user and system discovery settings in place.
Deprecations
ActiveDirectoryContainer parameter.
Set-CMDistributionPoint
Bugs that were fixed
Disabling HTTPS support for a distribution point may leave configuration in an incorrect state.
Non-breaking changes
New AddMacAddressForRespondingPxeRequest, RemoveMacAddressForRespondingPxeRequest,
ClearMacAddressForRespondingPxeRequest parameters to provide finer control over MAC addresses
supported for PXE requests.
Deprecations
MacAddressForRespondingPxeRequest and RespondToAllNetwork parameters.
Set-CMDriver
Bugs that were fixed
Pipelined driver object may be disposed.
Non-breaking changes
Performance improvements.
Set-CMHierarchySetting
Bugs that were fixed
AutoResolveClientConflict parameter value may not be processed.
AutoUpgradeDays parameter value may not be processed.
Set-CMMsiDeploymentType
Non-breaking changes
New SourceUpdateProductCode parameter for setting the update product code.
New InstallationBehaviorType parameters for setting the interaction method of the deployment type.
Set-CMObjectSecurityScope
Bugs that were fixed
Cannot configure security scope for a distribution point.
Set-CMProgram
Bugs that were fixed
Cmdlet incorrectly prompts for ProgramName when using pipelined SMS_Program object.
Set-CMRemoteConnectionProfileConfigurationItem
Bugs that were fixed
Cmdlet may not fail if invalid parameter combinations are used.
Set-CMSite
Bugs that were fixed
EnableLowFreeSpaceAlert parameter value changes may not be applied to the site settings.
Set-CMSiteMaintenanceTask
Bugs that were fixed
DeleteOlderThanDays parameter values may not be processed.
Set-CMSiteSystemServer
Bugs that were fixed
Changes may not apply as expected to a pipelined site system server object.
UseSiteServerAccount parameter is not applying as expected to the site server.
Set-CMSoftwareUpdateAutoDeploymentRule
Bugs that were fixed
Some rules may not be processed correctly.
Non-breaking changes
Performance improvements.
Support for additional update types.
Set-CMSoftwareUpdateDeploymentPackage
Non-breaking changes
New AddSoftwareUpdate, RemoveSoftwareUpdate, ClearSoftwareUpdate, ClearExpiredSoftwareUpdate,
ClearSupersededSoftwareUpdate, RemoveExpired, RemoveSuperseded, and RefreshDistributionPoint
parameters.
Set-CMSoftwareUpdatePointComponent
Non-breaking changes
New parameters for configuring company (AddCompany/RemoveCompany), product
(AddProduct/RemoveProduct), and product family (AddProductFamily/RemoveProductFamily)
subscriptions.
New EnableCallWsusCleanupWizard parameter to configure WSUS cleanup for a site.
Set-CMTaskSequence
Non-breaking changes
New AddOperatingSystemPlatform, RemoveSupportedOperatingSystemPlatform, and RunOnAnyPlatform
parameters for configuring the supported platforms for a task sequence.
Start-CMContentDistribution
Non-breaking changes
Performance improvements.
Start-CMTaskSequenceDeployment
Bugs that were fixed
Cmdlet does not enforce uniqueness on the specified deployment collection.
Non-breaking changes
New CollectionId and Collection parameters to support more flexibility in specifying the deployment
collection.
Update-CMDistributionPoint
Bugs that were fixed
Pipelined distribution point may be disposed.