我在 powershell 中见过很多方法来强制计算机从配置管理器执行客户端操作。
在我工作的地方,这是不可能的,因为我们无法调用远程计算机上的命令,因为它被阻止并且高级 IT 不想解锁它。
我确实在 C# 中找到了一个库,它允许我在 sccm 中执行一些操作:
AdminUI.SmsTraceListener.dll
AdminUI.WqlQueryEngine.dll
我可以向集合添加/删除计算机、进行查询并获取数据,但我没有找到强制计算机从配置管理器执行操作的方法。
这里有人知道这是否可能以及如何实现吗?
谢谢。
编辑1:在MSDN文档中搜索时,我确实找到了TriggerSchedule Method in Class SMS_Client但我找不到正确使用它的方法。我认为这可能是一条出路,但我仍然坚持这一点。
最佳答案
可以像这样通过 TriggerSchedule 触发机器策略更新
ManagementScope scope = new ManagementScope(@"\\.\root\ccm");
ManagementClass cls = new ManagementClass(scope.Path.Path, "SMS_Client", null);
ManagementBaseObject inParams = cls.GetMethodParameters("TriggerSchedule");
inParams["sScheduleID"] = "{00000000-0000-0000-0000-000000000021}";
ManagementBaseObject outMPParams = cls.InvokeMethod("TriggerSchedule", inParams, null);
您已经在您发布的链接中找到了 sScheduleID 的其他参数。这使用标准 WMI。使用 WqlQueryEngine,您可以访问一些基本上可以执行相同操作的 WMI 包装器。但是我没有看到太多优点。
像这样使用范围
\\.\root\ccm
使整个事情只能在本地工作,如果我理解正确的话,这就是你想要的。否则更换 .有了主机名或IP就可以远程工作。我发现唯一有点奇怪的是它需要管理权限,理论上这对于策略更新请求来说不是必需的。
关于C# SCCM - 客户端操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808129/