Current Branch 1706 的 Configuration Manager Cmdlet 库更改

注意

System Center Configuration Current Branch 1702 是这些更改的基线。 有关更多详细信息,请参阅 Current Branch 1702 Configuration Manager Cmdlet 库更改

重要更改

文档库更新

有关最新的 cmdlet 库文档,请参阅 ConfigurationManager 模块参考

管理员控制台 集成脚本环境 (ISE) 体验改进

从管理员控制台启动 ISE 时生成的脚本已更新为允许更多自定义和可重用性。

如果之前已生成脚本,则必须从 %APPDATA%\TEMP 中删除该脚本才能创建新脚本。

已删除 cmdlet

以下 cmdlet 不再受支持,已删除:

  • Add-CMComplianceRegistrySetting
  • New-CMComplianceRule

已知问题

这些是 Cmdlet 库的已知问题,未在此版本中解决。

Get-CMAadConditionalAccessPolicy 和 Set-CMAadConditionalAccessPolicy

这些 cmdlet 需要 64 位 PowerShell 环境。

解决方法

New-CMWirelessProfile 和 Set-CMWirelessProfile

如果在 64 位 PowerShell 环境中运行,Cmdlet 可能会失败。

解决方法

  • 在 32 位 PowerShell 环境中运行这些 cmdlet。

Add-CMDataWarehouseServicePoint 和 Set-CMDataWarehouseServicePoint

无法将计划设置为运行“每日”

解决方法

Import-CMSecurityRole

Cmdlet 可能会失败,并显示找到文件的 SecuredRoles.xsdDirectoryNotFoundException 错误。

解决方法

Import-Module确保针对ConfigurationManager.psd1文件而不是逻辑路径或模块名称调用 。

New-CMApplicationDeployment 和 New-CMClientSettingDeployment

Cmdlet 允许组合 CollectionNameCollectionCollectionId 参数,从而导致未定义的行为。

解决方法

仅指定 CollectionNameCollectionCollectionId。 不要组合这些参数。

Remove-CMStateMigrationPoint

如果存在由站点角色托管的内容,则删除状态迁移点时,Cmdlet 可能会失败并显示 ArgumentOutOfRangeException。

解决方法

直接从 SMS 提供程序中删除状态迁移点。

$smp = Get-CMStateMigrationPoint ... # Get the state migration point
$smp.Delete() # Directly delete the object.

New cmdlet

这些是此版本新添加的 cmdlet,可添加新功能或增强现有 cmdlet 的功能。

配置项目的符合性设置和规则

添加了新的 cmdlet 以支持为配置项目创建设置和规则。

  • Add/Set-CMComplianceSettingActiveDirectory
  • Add/Set-CMComplianceSettingAssembly
  • Add/Set-CMComplianceSettingDirectory
  • Add/Set-CMComplianceSettingFile
  • Add/Set-CMComplianceSettingIisMetabase
  • Add/Set-CMComplianceSettingRegistryKey
  • Add/Set-CMComplianceSettingRegistryKeyValue
  • Add/Set-CMComplianceSettingRule
  • Add/Set-CMComplianceSettingScript
  • Add/Set-CMComplianceSettingSqlQuery
  • Add/Set-CMComplianceSettingWqlQuery
  • Add/Set-CMComplianceSettingXPathQuery
  • Get-CMComplianceRule
  • Get-CMComplianceSetting
  • New-CMComplianceRuleAssembly
  • New-CMComplianceRuleExistential
  • New-CMComplianceRuleFileFolderAttribute
  • New-CMComplianceRuleFileFolderDate
  • New-CMComplianceRuleFileFolderPermission
  • New-CMComplianceRuleFileFolderSimple
  • New-CMComplianceRuleFileFolderSize
  • New-CMComplianceRuleRegistryKeyPermission
  • New-CMComplianceRuleValue
  • New-CMComplianceRuleVersion
  • Remove-CMComplianceRule
  • Remove-CMComplianceSetting

示例 1:创建不带规则的注册表项值设置

# Creates a setting looking for HKLM\Software\Microsoft\Windows NT\CurrentVersion:ReleaseId
$ci | Add-CMComplianceSettingRegistryKeyValue -SettingName "ReleaseId no rule" -DataType String -Hive LocalMachine -KeyName "SOFTWARE\Microsoft\Windows NT\CurrentVersion" -ValueName "ReleaseId" -NoRule

示例 2:使用存在规则创建注册表项值设置

# Creates a setting requiring the HKLM\Software\Microsoft\WindowsNT\CurrentVersion:ReleaseId registry key to exist
$ci | Add-CMComplianceSettingRegistryKeyValue -SettingName "ReleaseId must exist" -DataType String -Hive LocalMachine -KeyName "SOFTWARE\Microsoft\Windows NT\CurrentVersion" -ValueName "ReleaseId" -ExistentialRule -Existence MustExist

示例 3:使用值规则创建注册表项值设置

# Creates a setting requiring the HKLM\Software\Microsoft\WindowsNT\CurrentVersion:ReleaseId registry key to be equal to "1703"
$ci | Add-CMComplianceSettingRegistryKeyValue -SettingName "ReleaseId must be 1703" -DataType String -Hive LocalMachine -KeyName "SOFTWARE\Microsoft\Windows NT\CurrentVersion" -ValueName "ReleaseId" -ValueRule -ExpressionOperator IsEqual -ExpectedValue "1703"

示例 4:创建要求文件具有特定属性集的文件规则

$ci | Add-CMComplianceSettingFile -Path "C:\" -FileName "hiberfile.sys" -NoRule -SettingName "hiberfile.sys must have system attribute"
$setting = $ci | Get-CMComplianceSetting -SettingName "hiberfile.sys must have system attribute" # Get the SDK setting object
$rule = $setting | New-CMComplianceRuleFileFolderAttribute -RuleName "hiberfile.sys must be system" -System $true # Create the rule
$ci | Add-CMComplianceSettingRule $rule # Bind the rule to the CI

更新和服务

添加了新的 cmdlet 以支持在 Configuration Manager 中自动执行更新和维护。

  • Enable-CMSiteFeature
  • Get-CMSiteFeature
  • Get-CMSiteUpdate
  • Get-CMSiteUpdateHistory
  • Get-CMSiteUpdateInstallStatus
  • Install-CMSiteUpdate
  • Invoke-CMSitePromotePreproductionClient
  • Invoke-CMSiteUpdateCheck
  • Invoke-CMSiteUpdateDownload
  • Invoke-CMSiteUpdatePrerequisiteCheck

示例 1:下载更新并监视其状态

# Get the update object for the 1706 TP and invoke a download
$update = Get-CMSiteUpdate -Name "Configuration Manager Technical Preview 1706" -Fast
$update | Invoke-CMSiteUpdateDownload
``` powershell

# Now monitor the download status
``` powershell
while($true) {
    cls
    $update | Get-CMSiteUpdateInstallStatus  -Step Download | select orderid, progress, description | ft
    sleep 5
}

示例 2:安装更新并监视其状态

$update = Get-CMSiteUpdate -Name "Configuration Manager Technical Preview 1706" -Fast
$update | Install-CMSiteUpdate -IgnorePrerequisiteWarning -Force

while($true) {
    cls
    $update | Get-CMSiteUpdateInstallStatus -Step All -Complete | select orderid, progress, description -Last 10 | ft
    sleep 5
}

部署类型的增强检测方法

添加了新的 cmdlet,以支持将增强的检测方法添加到 Windows Installer (MSI) 、脚本和 Mac 部署类型。

  • Windows Installer & 脚本检测子句
    • New-CMDetectionClauseDirectory
    • New-CMDetectionClauseFile
    • New-CMDetectionClauseRegistryKey
    • New-CMDetectionClauseRegistryKeyValue
    • New-CMDetectionClauseWindowsInstaller
  • Mac 检测子句
    • New-CMDetectionClauseMacBundle
    • New-CMDetectionClauseMacPackage

示例:添加一个检测子句,该子句要求为 Windows Installer 部署类型提供特定的产品 ID 和目录名称。

$clause1 = New-CMDetectionClauseWindowsInstaller -ProductCode $guid [Value -ExpressionOperator IsEquals -ExpectedValue "1.1.1.1" # Do a version check
$clause2 = New-CMDetectionClauseDirectory -DirectoryName "mymsi" -Path "C:\" -Existence # c:\mymsi should exist
$app | Add-CMMsiDeploymentType -ContentLocation "\\myserver\mypath\mymsi.msi" -Force -AddDetectionClause ($clause1, $clause2)

注意

目前不支持修改检测子句。

目前不支持对检测子句进行分组或取消分组。

任务序列

添加了新的 cmdlet 以支持修改任务序列步骤和分组。

  • 任务序列组和步骤
    • Get/New/Remove/Set-CMTaskSequenceGroup
    • Add/Get/Remove-CMTaskSequenceStep
  • (Get 和 New 谓词支持的任务序列条件)
    • CMTaskSequenceStepConditionIfStatement
    • CMTaskSequenceStepConditionQueryWmi
    • CMTaskSequenceStepConditionRegistry
    • CMTaskSequenceStepConditionFile
    • CMTaskSequenceStepConditionFolder
    • CMTaskSequenceStepConditionOperatingSystem
    • CMTaskSequenceStepConditionSoftware
  • 任务序列命令 (Get、新建、删除和设置支持的谓词)
    • CMTaskSequenceStepRunCommandLine
    • CMTaskSequenceStepInstallApplication
    • CMTaskSequenceStepInstallSoftware
    • CMTaskSequenceStepInstallUpdate
    • CMTaskSequenceStepPartitionDisk
    • CMTaskSequenceStepReboot
    • CMTaskSequenceStepRunPowerShellScript
    • CMTaskSequenceStepSetupWindowsAndConfigMgr
    • CMTaskSequenceStepSetVariable
  • 任务序列支持命令
    • New-CMTaskSequencePartitionSetting

示例:创建运行两个 PowerShell 脚本的自定义任务序列

$step1 = New-CMTaskSequenceStepRunPowerShellScript -Name "Run script 1" -PackageID $PackageId -ScriptName "script1.ps1" -ExecutionPolicy Bypass
$step2 = New-CMTaskSequenceStepRunPowerShellScript -Name "Run script 2" -PackageID $PackageId -ScriptName "script2.ps1" -ExecutionPolicy Bypass
$ts = New-CMTaskSequence -Name "Run scripts" -CustomTaskSequence
$ts | Add-CMTaskSequenceStep -Step ($step1, $step2)

注意

要在未来版本中添加的其他任务序列命令。

iOS 批量注册

添加了新的 cmdlet 以支持 iOS 批量注册方案。

  • Get-CMCorpOwnedDevice
  • Get-CMIosEnrollmentProfile
  • New-CMIosEnrollmentProfile
  • Remove-CMCorpOwnedDevice
  • Remove-CMIosEnrollmentProfile
  • Set-CMIosEnrollmentProfileAssignment

无线配置文件

添加了新的 cmdlet 以支持无线配置文件。

  • Get-CMWirelessProfile
  • New-CMWirelessProfile
  • Remove-CMWirelessProfile
  • Set-CMWirelessProfile

部署 cmdlet

添加了新的 cmdlet 以支持其他部署方案。

  • New-CMClientSettingsDeployment
    • 取代 Start-CMClientSettingsDeployment
  • New-CMApplicationDeploymentSimulation
    • 取代 Start-CMApplicationDeploymentSimulation

资源跟踪和恢复 (BETA)

添加了新的 cmdlet,以支持跟踪 PowerShell 运行时使用的 SMS 提供程序对象,并在不再需要这些资源时清理这些资源。

  • Disconnect-CMTrackedObject
  • Start-CMObjectTracking
  • Stop-CMObjectTracking

运行 时 Start-CMObjectTracking ,PowerShell 运行时将跟踪 IResultObject 由 Cmdlet 库 cmdlet 创建的对象。 未使用 手动清理 .Dispose() 的 Cmdlet 可以通过对单个对象使用 Disconnect-CMTrackedObject 来回收 (示例: $o | Disconnect-CMTrackedObject) ,或 Disconnect-CMTrackedObject -All 可用于回收 所有 跟踪对象。

请注意,一旦回收对象,便不能再重复使用该对象,也无法再通过对象管道传递给另一个 cmdlet。

Stop-CMObjectTracking 可用于关闭对象跟踪。 请注意,以前分配的对象将保持活动状态。

未认领的资源可能会导致 SMS 提供程序引发配额冲突错误。 这些问题通常表现在处理非常大的 SMS 提供程序对象集或长时间运行的环境中

注意

这是一项实验性功能,在将来的版本中可能会发生更改或删除。 此功能是选择加入的,默认情况下未启用。

Get-CMClientHealthSummary

此 cmdlet 可用于获取具有可选日期范围的集合的客户端运行状况信息。

示例:从 2017 年 1 月开始获取“所有系统”的客户端运行状况。

Get-CMCollection -Name "All Systems" | Get-CMClientHealthSummary -StartDate "2017/01/01"

Get-CMSoftwareUpdateSyncStatus

此 cmdlet 可用于获取与 Windows 更新 同步的状态。

Invoke-CMContentRedistribution

此 cmdlet 可用于重新分发已部署到分发点的内容。 这支持应用程序、包、启动映像、软件更新、驱动程序、映像、任务序列和操作系统内容分发。

示例:将包重新分发到分发点

Get-CMPackage -Name Contoso | Invoke-CMContentRedistribution -DistributionPointName myserver.contoso.com

Invoke-CMDeploymentSummarization

此 cmdlet 可用于立即执行部署摘要。

Stop-CMMigrationSource

此 cmdlet 可用于阻止站点迁移的发生。 Sync-CMMigrationSource 必须用于恢复迁移。

Cmdlet 更改

已针对此版本的现有 cmdlet 进行了以下更改。 更改可能是新功能、bug 修复或弃用,并且可能会中断。 如果使用本节中列出的某个 cmdlet 或功能区域,请仔细查看更改,以了解它们如何影响你的使用。

Add-CMApplicationCatalogWebsitePoint

已修复的 Bug

如果为 ApplicationWebServicePointServer 指定的值不包含预期的站点角色,Cmdlet 可能会失败并出现 KeyNotFoundException 错误。

非中断性变更

添加了 ApplicationWebServicePointServer ,以允许使用 的 Get-CMApplicatinWebServicePoint输出定义 Web 服务点。 不能与 ApplicationWebServicePointServerName 组合使用。

Add-CMAssetIntelligenceSynchronizationPoint

已修复的 Bug

如果指定了无效 的 CertificatePath ,则角色的创建可能会不正确。 另请参阅: Remove-CMAssetIntelligenceSynchronizationPoint

Add-CMDataWarehouseServicePoint

中断性变更

DaysOfWeek 值从整数更改为 DataWarehouseDaysOfWeek 枚举值。

已修复的 Bug

DataWarehouseDatabaseServerName 不会验证 FQDN 主机名是否少于 16 个字符。

非中断性变更

添加了 DataWarehouseInstanceName 参数以支持指定SQL Server实例。

Add-CMMacDeploymentType

非中断性变更

添加了 AddDetectionClause 参数,以支持向部署类型添加检测子句。 有关详细信息 ,请参阅增强的检测方法部分

Add-CMMsiDeploymentType

非中断性变更

添加了 AddDetectionClause 参数,以支持向部署类型添加检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RebootBehavior 参数以允许定义重新启动行为。

Add-CMScriptDeploymentType

非中断性变更

添加了 AddDetectionClause 参数,以支持向部署类型添加检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RebootBehavior 参数以允许定义重新启动行为。

Add-CMWindowsPhoneStoreDeploymentType

已修复的 Bug

如果指定了 windowsphone.com URL,则可能会创建无效的部署类型。

Approve-CMApprovalRequest 和 Deny-CMApprovalRequest

非中断性变更

Cmdlet 现在支持使用与请求关联的 GUID 批准或拒绝审批请求。

Get-CMAlert

已修复的 Bug

cmdlet 不会检索与 Endpoint Protection 或客户端运行状况相关的警报类型。

Get-CMApprovalRequest

非中断性变更

添加了 CurrentState 参数,以允许按审批状态筛选审批请求。

Get-CMMaintenanceWindow

已修复的 Bug

如果没有为站点定义维护时段,Cmdlet 可能会失败并显示 NullReferenceException。

Import-CMWirelessProfileConfigurationItem

已修复的 Bug

Path 参数不会验证输入是否为有效的 UNC 路径。

Import-CMClientCertificatePfx

非中断性变更

添加了 ForSmimeEncryption 参数,以指示Microsoft Intune可以使用证书进行设备加密。

Import-CMDriver

已修复的 Bug

Path 参数不会验证输入是否为有效的 UNC 路径。

Import-CMTaskSequence

已修复的 Bug

ImportFilePath 参数不会验证输入是否为有效的 UNC 路径。

Lock-CMObject

已修复的 Bug

如果对不支持锁定的对象调用,Cmdlet 可能会失败并显示 NullReferenceException。

New-CMADGroupDiscoveryScope

已修复的 Bug

GroupDN 参数不会验证输入是否为有效的可分辨名称。

New-CMAlertSubscription

已修复的 Bug

如果为 EmailAddress 指定了多个值,则订阅配置不正确。

New-CMApplicationDeployment

非中断性变更

添加了 EnableSoftDeadline 参数以配置延迟强制。

New-CMCertificateProfileScep

非中断性变更

KeySize 参数现在允许字节值 4096

New-CMTaskSequence

非中断性变更

添加了 TimeZone 参数,允许在使用 InstallOperatingSystemImage 时指定时区信息。 可以使用 cmdlet 指定 Get-TimeZone 时区。

New-CMSoftwareUpdateAutoDeploymentRule

已修复的 Bug

如果指定了 Language ,则可能会创建无效的自动部署规则。

如果 “位置” 不存在,可能会创建无效的自动部署规则。

Remove-CMAssetIntelligenceSynchronizationPoint

已修复的 Bug

如果删除配置不正确的资产智能同步点角色,Cmdlet 可能会失败并显示 ArgumentNullException。

Remove-CMMaintenanceWindow

已修复的 Bug

WhatIfConfirm 可能会导致 cmdlet 返回 ItemNotFoundException 错误。

Remove-CMUpdateGroupDeployment

已修复的 Bug

Cmdlet 可能无法删除有效部署并显示 ItemNotFoundException 错误。

Remove-CMUserCollectionDirectMembershipRule

非中断性变更

ResourceName 参数现在支持通配符值。

Set-CMAlertSubscription

弃用

EmailAddress 参数已被 AddEmailAddressRemoveEmailAddress 取代

非中断性变更

添加了 AddEmailAddress 参数,以允许就地修改电子邮件地址。 不能与 EmailAddress 组合使用。

添加了 RemoveEmailAddress 参数,以允许就地删除电子邮件地址。 不能与 EmailAddress 组合使用。

Set-CMApplicationDeployment

非中断性变更

添加了 EnableSoftDeadline 参数以配置延迟强制。

Set-CMConfigurationPolicyDeployment

已修复的 Bug

Cmdlet 可能无法部署远程连接配置文件。

非中断性变更

添加了 RemoteConnectionProfileNameRemoteConnectionProfileId 参数,以允许按名称或 ID 部署远程连接配置文件。

Set-CMDataWarehouseServicePoint

中断性变更

DaysOfWeek 值从整数更改为 DataWarehouseDaysOfWeek 枚举值。

已修复的 Bug

运行 cmdlet 时,未使用的参数可能会导致值重置为默认值。

DataWarehouseDatabaseServerName 不会验证 FQDN 主机名是否少于 16 个字符。

非中断性变更

添加了 DataWarehouseInstanceName 参数以支持指定SQL Server实例。

Set-CMEmailNotificationComponent

已修复的 Bug

如果在未指定端口值的情况下指定 UseSsl,则可能未正确配置 SMTP 端口。

Set-CMHierarchySetting

已修复的 Bug

Cmdlet 允许将排除集合设置为内置集合 (,例如“所有系统) ”。

非中断性变更

添加了 EnablePrereleaseFeature 参数以支持启用预发行版功能。 这是一次性更改,除非使用 Force ,否则将提示确认。 有关更多详细信息 ,请参阅更新 & 服务

Set-CMMacDeploymentType

非中断性变更

添加了 AddDetectionClause 参数,以支持向部署类型添加检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RemoveDetectionClause 参数,以支持从部署类型中删除检测子句。 有关详细信息 ,请参阅增强的检测方法部分

Set-CMMsiDeploymentType

非中断性变更

添加了 AddDetectionClause 参数,以支持向部署类型添加检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RemoveDetectionClause 参数,以支持从部署类型中删除检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RebootBehavior 参数以允许定义重新启动行为。

Set-CMProgram

已修复的 Bug

ProgramRunType 更改可能不会应用于指定的程序。

Set-CMScriptDeploymentType

非中断性变更

添加了 AddDetectionClause 参数,以支持向部署类型添加检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RemoveDetectionClause 参数,以支持从部署类型中删除检测子句。 有关详细信息 ,请参阅增强的检测方法部分

添加了 RebootBehavior 参数以允许定义重新启动行为。

Set-CMSiteMaintenanceTask

已修复的 Bug

无法为与站点备份相关的任务启用警报。

Set-CMSoftwareInventory

中断性变更

Tag1IdTag2IdTag3Id 参数现在执行验证以确保使用正确的格式。

非中断性变更

添加了 PassThru 参数支持。

已修复的 Bug

指定无效 的 Tag2Id 值可能会导致删除最初指定的标记。

Set-CMSoftwareUpdateAutoDeploymentRule

已修复的 Bug

如果 “位置” 不存在,可能会创建无效的自动部署规则。

Set-CMSoftwareUpdatePointComponent

非中断性变更

添加了 ContentFileOption 参数以配置Windows 10更新行为。

Set-CMWindowsPhoneStoreDeploymentType

已修复的 Bug

如果指定了 windowsphone.com URL,则可能会创建无效的部署类型。