title | titleSuffix | description | ms.date | ms.topic | ms.author | author | manager | ROBOTS |
---|---|---|---|---|---|---|---|---|
Version 1810 release notes |
Configuration Manager |
Release notes for the changes to PowerShell cmdlets in Configuration Manager version 1810. |
02/20/2019 |
conceptual |
banreetkaur |
Banreet |
apoorvseth |
NOINDEX |
Applies to: Configuration Manager (Current Branch)
Note
Configuration Manager current branch version 1806 is the baseline for these changes. For more information, see Configuration Manager Cmdlet Library changes for version 1806.
The following cmdlets are added to create requirement rules for deployment types and global conditions:
- New-CMGlobalConditionExpression
- New-CMRegistryAccessControlEntry
- New-CMRequirementRuleActiveDirectorySiteValue
- New-CMRequirementRuleBooleanValue
- New-CMRequirementRuleCMSiteValue
- New-CMRequirementRuleCommonValue
- New-CMRequirementRuleDeviceOwnershipValue
- New-CMRequirementRuleExistential
- New-CMRequirementruleExpression
- New-CMRequirementRuleFileAttributeValue
- New-CMRequirementRuleFilePermissionValue
- New-CMRequirementRuleFreeDiskSpaceValue
- New-CMRequirementRuleInputTypeValue
- New-CMRequirementRuleOperatingSystemLanguageValue
- New-CMRequirementRuleOperatingSystemValue
- New-CMRequirementRuleOUValue
- New-CMRequirementRuleScreenResolutionValue
Supported cmdlets for Add and Set-CM*DeploymentType have added parameters for GroupDetectionClauses and DetectionClauseConnector.
$rule1 = Get-CMGlobalCondition -Name "Total physical memory" | New-CMRequirementRuleCommonValue -Value1 2048 -RuleOperator GreaterEquals
$myRuleExpression = New-CMRequirementRuleExpression -AddRequirementRule $rule1
$myGC = New-CMGlobalConditionExpression -Name "GCExp" -DeviceType Windows -RootExpression $myRuleExpression
$ruleProc = Get-CMGlobalCondition -Name "Number of processors" | New-CMRequirementRuleCommonValue -Value1 2 -RuleOperator GreaterEquals
$ruleMem1 = Get-CMGlobalCondition -Name "Total physical memory" | New-CMRequirementRuleCommonValue -Value1 2048 -RuleOperator GreaterThan
$ruleMem2 = Get-CMGlobalCondition -Name "Total physical memory" | New-CMRequirementRuleCommonValue -Value1 4096 -RuleOperator LessEquals
$ruleCPUSpeed1 = Get-CMGlobalCondition -Name "CPU Speed" | New-CMRequirementRuleCommonValue -Value1 5120 -RuleOperator LessEquals
$ruleCPUSpeed2 = Get-CMGlobalCondition -Name "CPU Speed" | New-CMRequirementRuleCommonValue -Value1 1024 -RuleOperator GreaterThan
$expressionProc = New-CMRequirementRuleExpression -AddRequirementRule $ruleProc
$expressionMem = New-CMRequirementRuleExpression -AddRequirementRule $ruleMem1, $ruleMem2 -ClauseOperator And
$expressionCPU = New-CMRequirementRuleExpression -AddRequirementRule $ruleCPUSpeed1, $ruleCPUSpeed2 -ClauseOperator And
$myRuleExpression = New-CMRequirementRuleExpression -RootExpression $expressionProc -AddExpression $expressionMem,$expressionCPU -ClauseOperator And -AddAsGroup -GroupOperator Or
$myGC = New-CMGlobalConditionExpression -Name "GCExp" -DeviceType Windows -RootExpression $myRuleExpression
$myGC = Get-CMGlobalCondition -Name "Operating System Language" | Where-Object PlatformType -eq 1
$cultureA = [System.Globalization.CultureInfo]::GetCultures([System.Globalization.CultureTypes]::AllCultures) | Where-Object Name -eq "zh"
$cultureB = [System.Globalization.CultureInfo]::GetCultures([System.Globalization.CultureTypes]::AllCultures) | Where-Object Name -eq "zh-CN"
$myRule = $myGC | New-CMRequirementRuleOperatingSystemLanguageValue -RuleOperator NoneOf -Culture $cultureA,$cultureB -IsMobile $False
Set-CMScriptDeploymentType -ApplicationName "myApp" -DeploymentTypeName "myDT" -AddRequirement $myRule
$clauseFile1 = New-CMDetectionClauseFile -FileName "abc" -Path "c:\abc" -PropertyType Size -ExpectedValue 1024 -ExpressionOperator IsEquals -Value
$clauseFile2 = New-CMDetectionClauseFile -FileName "abc" -Path "c:\abc" -PropertyType Size -ExpectedValue 2048 -ExpressionOperator IsEquals -Value
$clauseFile3 = New-CMDetectionClauseFile -FileName "abc" -Path "c:\abc" -PropertyType Size -ExpectedValue 4096 -ExpressionOperator IsEquals -Value
Set-CMScriptDeploymentType -ApplicationName "testApp1" -DeploymentTypeName "abc" -AddDetectionClause $clauseFile1,$clauseFile2,$clauseFile3 -DetectionClauseConnector @{"LogicalName"=$clauseFile3.Setting.LogicalName;"Connector"="OR"} -GroupDetectionClauses $clauseFile2.Setting.LogicalName, $clauseFile3.Setting.LogicalName
None
None
The following items are known issues with the Cmdlet Library that aren't resolved in this version.
These cmdlets require a 64-bit PowerShell environment.
- None
Cmdlet may fail with a DirectoryNotFoundException error locating the file SecuredRoles.xsd
.
- Call
Import-Module
against theConfigurationManager.psd1
file, and not the logical path or module name.
Changes to Schedule may not be shown in the Configuration Manager console even though the underlying SMS Provider object has been changed.
- Quit and relaunch the Configuration Manager console.
This version adds new cmdlets to support tracking SMS Provider objects used by the PowerShell runtime, and to clean up these resources when they're no longer needed.
- Disconnect-CMTrackedObject
- Start-CMObjectTracking
- Stop-CMObjectTracking
When you run Start-CMObjectTracking
, the PowerShell runtime tracks IResultObject
objects created by Cmdlet Library cmdlets. For cmdlets that aren't manually cleaned up with .Dispose()
, reclaim them by using Disconnect-CMTrackedObject
against an individual object.
# Reclaim a single tracked object
$o | Disconnect-CMTrackedObject
# Reclaim all tracked objects
Disconnect-CMTrackedObject -All
Once an object is reclaimed, it can no longer be reused or passed to another cmdlet through the object pipeline.
Stop-CMObjectTracking
can be used to turn off object tracking. Previously allocated objects remain active.
Unclaimed resources can cause the SMS Provider to raise quota violation errors. These quota issues typically manifest from working with large sets of SMS Provider objects or in long-running environments.
Note
This feature is experimental and may be subject to change or removal in a future release. It's opt-in and isn't enabled by default.
The following changes have been made to existing cmdlets in this version. Changes may be new functionality, bug fixes, or deprecation. Some changes may be breaking. If you use one of the cmdlets or feature areas listed in this section, carefully review the changes to understand how they may affect your use.
- New EnableLedbat parameter to enable LEDBAT for a distribution point
- Can't set CompanyLogoPath or CompanyLogoThemedPath to artwork larger than 400x100 and 750 KB
- If EnableCloudGateway is
$true
, can set CommunicationType to unsupported value ofHttp
- Cmdlet doesn't clear PXE deployments
- Cmdlet may not return expected properties for a device
- Cmdlet now returns client upgrade and usage data settings
- Cmdlet allows a user collection to be specified as a deployment target
- ExpectedValue parameter now allows for negative numbers
- PostponeDateTime parameter not available in all parameter sets
- Can't use
$false
with DetectSlowLinkDisabled parameter - Some parameters can't be set when DetectSlowLink is
$true
- Can now use 'Fast' with EapType parameter
- New RememberUserCredentials parameter can be used to set or clear credentials.
- RememberCredentials parameter has been superseded by RememberUserCredentials
- ExpectedValue parameter now allows for negative numbers
- New EnableLedbat parameter to configure LEDBAT for a distribution point
- New TelemetryLevel parameter for configuring usage data settings
- Can't set CompanyLogoPath or CompanyLogoThemedPath to artwork larger than 400x100 and 750KB
- If EnableCloudGateway is
$true
, can set CommunicationType to unsupported value ofHttp
- AddDetectionClause parameter clears previously existing MSI product code detection clause
- AddRequirement parameter may fail with "SQL_ERROR"
- New GroupDetectionClauses and DetectionClauseConnector parameters for grouping detection clauses
- Added new parameters to configure feature and non-feature supersedence
- New ImmediatelyExpireSupersedenceForFeature parameter to immediately expire superseded updates
- New WaitForMonthFeature parameter to configure how long to expire superseded updates
- UserName parameter doesn't support
%VARIABLE%
format
- Cmdlet now warns when AddConfigFile is used and ModeOption is
Standard
- Cmdlet now warns when SlowLink and SyncMins parameter are used when EnableSlowLink is
$false
- Can now use 'Fast' with EapType parameter
- New RememberUserCredentials parameter can be used to set or clear credentials.
- RememberCredentials parameter has been superseded by RememberUserCredentials
- Cmdlet allows a user collection to be specified as a deployment target