Configuration Manager cmdlet 入门

适用于: Configuration Manager(current branch)

使用Windows PowerShell管理Configuration Manager层次结构。 可以使用 PowerShell 脚本自动执行或扩展Configuration Manager类似于使用 WMI 和 C# 的其他记录方法。 有关详细信息,请参阅 Configuration Manager SDK

在 PowerShell 中从Configuration Manager控制台或Windows PowerShell会话中运行Configuration Manager cmdlet 和脚本。 使用 Configuration Manager 控制台运行 Configuration Manager cmdlet 时,会话会自动在站点的上下文中运行。

注意

当前支持的所有 Configuration Manager current Branch 版本都支持Windows PowerShell版本 5.1。 如果已安装 PowerShell 版本 7,仍可使用 PowerShell 版本 5.1。 有关详细信息,请参阅将 PowerShell 7 与 Windows PowerShell 5.1 并排使用

Configuration Manager PowerShell cmdlet 库支持 PowerShell 7。 有关详细信息,请参阅 对 PowerShell 版本 7 的支持

从版本 2103 开始,ConfigurationManager PowerShell 模块需要 Microsoft .NET 版本 4.7.2 或更高版本。

Configuration Manager控制台中的 PowerShell

打开 PowerShell 的最简单方法是直接从 Configuration Manager 控制台打开。

  1. 启动Configuration Manager控制台。 左上角有一个蓝色矩形。 选择蓝色矩形中的白色箭头,然后选择“通过Windows PowerShell连接”。

  2. Windows PowerShell加载后,你将看到一个包含站点代码的提示。 例如,如果网站代码为“ABC”,则提示如下所示: PS ABC:\>

  3. 若要验证它是否正常工作,请使用 Get-CMSite cmdlet。 此 cmdlet 返回有关当前连接到的 Configuration Manager 站点以及任何子站点的信息。 例如,站点服务器名称、安装控制器、站点名称和版本。

注意

从 Configuration Manager 控制台启动 PowerShell 或 PowerShell ISE 时,它将使用进程范围的 AllSigned 执行策略。 如果此默认安全配置对于你的环境来说太多,有两个选项可以解决此问题:

导入 Configuration Manager PowerShell 模块

通过手动加载 Configuration Manager 模块,从现有Windows PowerShell会话连接到Configuration Manager。

  1. 从“开始”菜单打开Windows PowerShell会话。

  2. 使用 Import-Module cmdlet 导入 Configuration Manager 模块。 指定Configuration Manager模块的路径,或者更改为包含该模块的目录。 默认情况下,模块位于以下路径: C:\Program Files (x86)\Microsoft Endpoint Manager\AdminConsole\bin\ConfigurationManager.psd1

    从版本 2111 开始,安装 Configuration Manager 控制台时,模块的路径现在将添加到系统环境变量 PSModulePath 中。 有关详细信息,请参阅 about_PSModulePath。 通过此更改,只需按名称导入模块: Import-Module ConfigurationManager

    重要

    请确保不要导入可能存在于另一个文件夹中的旧版模块。 导入模块后,使用以下命令检查模块版本和路径:

    (Get-Module -Name ConfigurationManager).Version
    (Get-Module -Name ConfigurationManager).Path
    

    以下示例将更改为模块的 目录,然后将其导入:

    Set-Location 'C:\Program Files (x86)\Microsoft Endpoint Manager\AdminConsole\bin'
    Import-Module .\ConfigurationManager.psd1
    

    提示

    还可以使用 SMS_ADMIN_UI_PATH 环境变量。 例如:

    Set-Location "$env:SMS_ADMIN_UI_PATH\..\"
    

    此外,可以使用 cd 别名来更改目录,而不是 Set-Location cmdlet。

  3. 如果是首次在此计算机上导入 Configuration Manager 模块,则可能需要创建站点驱动器。 例如:

    New-PSDrive -Name "ABC" -PSProvider "CMSite" -Root "siteserver.contoso.com" -Description "Primary site"
    

    提示

    从控制台启动 PowerShell 时,它会自动创建 PSDrive,以便为当前连接的站点提供便利。 如果你位于层次结构中,请使用 New-PSDrive 为每个站点创建驱动器。

  4. 若要运行 Configuration Manager cmdlet,需要切换Configuration Manager站点的路径。 在以下示例中,站点代码为 ABC

    Set-Location ABC:
    
  5. 使用 Get-CMSite cmdlet 确认 PowerShell 正确加载了 Configuration Manager 模块。

更新帮助

若要获取 Configuration Manager PowerShell 模块的最新信息,请使用 Update-Help cmdlet。 此内容与 Microsoft Learn 上针对 ConfigurationManager 模块发布的内容相同。

重要

由于版本 2103 中可更新内容的结构和发布方式发生了更改,因此不要在版本 2010 站点上使用 Update-Help 。 将站点更新到版本 2103 或更高版本,然后更新本地帮助内容。

有关详细信息,请参阅 PowerShell 版本 2103 发行说明

运行此 cmdlet 的计算机需要 Internet 访问,特别是 pshelpprod.blob.core.windows.net。 然后,从提升的 PowerShell 会话运行以下命令:

Update-Help -Module ConfigurationManager

更新Configuration Manager cmdlet 帮助后,可以使用 Get-Help cmdlet 获取有关 cmdlet 的帮助。 例如:

Get-Help Get-CMDevice
Get-Help Get-CMDevice -Examples
Get-Help Get-CMDevice -Parameter *

有关详细信息,请参阅以下 PowerShell 博客文章: 你已获得帮助!

通用参数

所有Configuration Manager cmdlet 都支持常见的 PowerShell 参数:

  • 调试
  • ErrorAction
  • ErrorVariable
  • InformationAction
  • InformationVariable
  • OutVariable
  • OutBuffer
  • PipelineVariable
  • Verbose
  • WarningAction
  • WarningVariable

有关详细信息,请参阅 about_CommonParameters

对 PowerShell 版本 7 的支持

Configuration Manager PowerShell cmdlet 库支持 PowerShell 版本 7。 有关 PowerShell 7 的详细信息(包括有关如何下载和安装的说明),请参阅 在 Windows 上安装 PowerShell

提示

PowerShell 7 作为 pwsh.exe运行。 早期版本的 PowerShell 以 运行 powershell.exe

不支持 PowerShell 版本 7 的 Cmdlet

以下 cmdlet 不支持 PowerShell 7:

  • Import-CMPackage
  • Import-CMDriverPackage
  • Import-CMTaskSequence
  • Export-CMPackage
  • Export-CMDriverPackage
  • Export-CMTaskSequence
  • Add-CMReportingServicePoint
  • Get-CMReportingServicePoint
  • Remove-CMReportingServicePoint
  • Set-CMReportingServicePoint

它们需要.NET Framework而不是与 PowerShell 版本 7 一起使用的 .NET Core。

从版本 2103 开始,如果尝试在 PowerShell 版本 7 会话中使用这些 cmdlet,它们将失败并出现以下错误: This cmdlet only supports the ".NET Framework" runtime.

PowerShell 版本 7 的已知问题

PowerShell 反馈

如果对Configuration Manager PowerShell cmdlet 有反馈,请使用Configuration Manager控制台中的相同选项发送反馈。 有关详细信息,请参阅 产品反馈

发送皱眉时,请提供以下特定于 PowerShell 的其他信息:

  • 你使用的确切脚本或命令语法,以便 Microsoft 可以尝试重现问题。

  • 与实际行为相比,预期的行为。

  • 使用 Verbose 公共参数运行它时的完整输出。

  • ConfigurationManager 模块的版本和路径。 例如,包括以下命令的输出:

    (Get-Module -Name ConfigurationManager).Version
    (Get-Module -Name ConfigurationManager).Path
    
  • 如果 cmdlet 返回错误,请使用以下命令获取异常详细信息:

    $Error[0].Exception | Format-List * -Force
    

预览发行说明

核心文档库中的技术预览功能一文包括 PowerShell 的发行说明。 有关示例,请参阅 技术预览版 2202

后续步骤

有关最新版本Configuration Manager更改内容的详细信息,请从目录中选择最新的发行说明

有关单个 cmdlet 的详细信息,请参阅 Configuration Manager cmdlet 参考

有关学习和开始使用Windows PowerShell的详细信息,请参阅 PowerShell 101