powershell - 使用 PowerShell 远程执行软件中心包
问题描述
我有一个特定的用例,我需要远程执行 Windows 10 版本 1809 操作系统升级包,该升级包发布在 Windows 10 v1709 PC 上的操作系统选项卡下的软件中心。我有一个 PowerShell one-liner,当 PC 使用管理员帐户(与 PC 登录的帐户相同)登录时,它将远程执行此操作,如下所示:
Invoke-Command -ComputerName Computer001 {(New-Object -ComObject "UIResource.UIResourceMgr").ExecuteProgram("*", "OS_UpGrade", $true)}
当目标 PC 使用我用来运行 PowerShell 终端的相同帐户登录时,这非常有效。但是当 PC (Computer001) 注销时,我运行相同的命令,我得到这个错误:
"Error HRESULT E_FAIL has been returned from a call to a COM component.
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
+ PSComputerName : Computer001"
我猜想在 PC 注销时无法调用 ComObject,这是正确的吗?有什么办法可以解决吗?
任何指导将不胜感激。
解决方案
我在这里更深入地查看了文档。
问题特别是您正在调用的 COM 对象(如您所料)。
SCCM 的 SDK 特别提到这个 COM 对象是 CM 的 UI。UIResource.UIResourceMgr。它还在 SDK 中指出,此特定对象可能难以调用,因为它依赖于用户上下文。
恐怕您将不得不找到一个不依赖于调用 UI 资源的执行。
通过 PSExec 运行它可能比调用 SCCM 的 PowerShell 脚本更容易,因为我认为您不能使用 SCCM 本身来远程调用安装。
推荐阅读
- mysql - 使用 SQL 查找表空闲时间
- macos - 返回两个特殊字符之间的文本(竖线)
- azure - 如何获取 Azure DevOps Artifact 使用者的列表?
- r - 投资任何权重的 R LP
- python-3.x - 在 cross_val_predict (sklearn) 中使用 StratifiedShuffleSplit
- matlab - 只执行了一部分代码,不显示错误信息
- python-3.x - 气流 on_success_callback 返回 cryptography.fernet.InvalidToken
- sql-server - SQL Server:表的行级安全性未在另一个谓词函数中强制执行
- python-3.x - Scrapu-Splash 返回 502 或 504 状态
- python - 如何用一系列连续数字替换熊猫数据框中的列值?