如何通过PowerShell查询CCM_Application中AppDTs的PostInstallAction属性
在本地SCCM客户端查询应用程序的PostInstallAction属性
由于CCM_Application的AppDTs是嵌套的CCM_AppDeploymentType对象数组,WQL无法直接查询嵌套属性,必须先获取CCM_Application实例,再遍历其AppDTs数组提取目标属性。以下是可在无站点服务器连接的本地客户端运行的PowerShell脚本:
完整脚本示例
# 连接本地SCCM客户端WMI命名空间 $apps = Get-CimInstance -Namespace root\ccm\ClientSDK -ClassName CCM_Application # 遍历每个应用程序 foreach ($app in $apps) { # 遍历应用下的所有部署类型(AppDTs数组) foreach ($dt in $app.AppDTs) { # 输出关键信息,可根据需求调整字段 [PSCustomObject]@{ ApplicationName = $app.Name DeploymentTypeId = $dt.Id DeploymentTypeName = $dt.Name PostInstallActionCode = $dt.PostInstallAction PostInstallAction = switch ($dt.PostInstallAction) { 0 { 'None' } 1 { 'Run Program' } 2 { 'Force Reboot' } 3 { 'Force Logoff' } default { 'Unknown Action' } } } } }
关键说明
- 使用
Get-CimInstance:替代老旧的Get-WmiObject,性能更优且兼容性更强,是现代PowerShell操作WMI的推荐方式。 - 权限要求:需以管理员权限运行脚本,否则会因权限不足无法访问
root\ccm\ClientSDK命名空间。 - 离线运行支持:所有操作仅针对本地客户端WMI,无需连接SCCM站点服务器,完全适配离线客户端环境。
- 枚举值转换:
PostInstallAction为整数类型,脚本中添加了对应可读文本的转换逻辑,方便直接查看结果。
内容的提问来源于stack exchange,提问作者crdy
相关产品推荐
相关产品推荐

