C# SCCM - 客户端操作

标签 c# sccm

我在 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/

相关文章:

c# - 在 C# 中检测有向图中循环的简单实现

c# - 在两台计算机之间进行 .NET 远程处理时出现套接字错误

c# - 拉绳自动换行或显示整个文本

powershell - root\ccm\cliensdk 命名空间内的早期过滤

sql - SQL语句中分组多个 'AND x not like y'

powershell - 如何使用 PowerShell 查找集合成员信息

c# - 确保方法返回值不被库丢弃

c# - 在 ASP.NET MVC 3 Web App + Ninject + EF 中为不同的用户设置不同的连接字符串

vb.net - 如何在 VB - Visual Studio 2015 中打开 SCCM 配置管理器

c# - 使用 Powershell 创建 ConfigMgr 应用程序时图标质量不佳