【问题标题】:SCCM 2012 R2 Cannot Run PowerShell Microsoft.SMS.TSEnvironment COMObjectSCCM 2012 R2 无法运行 PowerShell Microsoft.SMS.TSEnvironment COMObject
【发布时间】:2015-07-17 17:50:23
【问题描述】:

通过 PowerShell 脚本,我尝试与 SCCM 2012 R2 任务序列进行交互。很多网站都提到使用类似于以下内容的内容:

$tsenv = new-object -ComObject microsoft.sms.tsenvironment

首先,如果有更好/不同的方法,我完全愿意接受。但是对于这种方式,每当我运行该行时,无论我如何加载 ConfigurationManager 模块(例如,从 SCCM 控制台启动 PowerShell,从 x86 或 x64 PowerShell 控制台加载 ConfigurationManager.psd1),它总是返回以下错误。我还在实验室 SCCM 2012 R2 环境和 2 个独立的生产环境中进行了尝试:

“New-Object : 检索具有 CLSID 的组件的 COM 类工厂...由于以下错误而失败:80040154 类未注册”

我正在网上寻找答案,所以希望这里的人能够在 PowerShell 中使用带有 SCCM 2012 R2 的 ComObject,或者如果我运气不好。

【问题讨论】:

  • 我以为 Microsoft.SMS.TSEnvironment 仅在 OSD 期间可用?
  • 我将它用于 OSD 任务序列。我试图在插入任务序列之前测试脚本。 com 对象是否仅在 OSD 任务序列期间运行时可用?
  • 不确定它是否必须是 OSD 任务序列或是否有任何 TS 可以工作。这来自您发布的链接:Microsoft.SMS.TSEnvironment COM 对象仅在任务序列运行时可用,因此您需要在任务序列内测试您的脚本。 (在这种情况下,“将任务序列环境转换为 PowerShell 变量可能会派上用场:您是否使用硬编码变量进行测试,在部署脚本之前删除这些值。)
  • 嘘。我什至没有看到。谢谢,拉赫尔!

标签: powershell sccm


【解决方案1】:

仅供参考, 除了有一个活动的任务序列之外,您还应该确保在 64 位操作系统上创建对象时从 x64 进程运行,否则创建将失败并出现“未注册类”错误,就好像没有 TS 正在运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多