.NET WMI SCCM应用程序安装(远程)

问题描述 投票:0回答:1

我正在尝试通过.Net应用程序的WMI查询远程安装/卸载SCCM应用程序。

我的代码如下:

    Dim wmiLoc As ManagementScope = New ManagementScope("\\" & Target & "\root\ccm\ClientSDK", Options)
    Dim wmiProcPath As ManagementPath = New ManagementPath("CCM_Application")
    Dim mc As ManagementClass = New ManagementClass(wmiLoc, wmiProcPath, Nothing)
    Dim inParams As ManagementBaseObject = mc.GetMethodParameters("Install")

    inParams("EnforcePreference") = "0"
    inParams("Id") = ThisID
    inParams("IsMachineTarget") = ThisIMT
    inParams("IsRebootIfNeeded") = "False"
    inParams("Priority") = "High"
    inParams("Revision") = ThisRev

    Dim outParams As ManagementBaseObject = mc.InvokeMethod("Install", inParams, Nothing)
    Console.WriteLine("Job Id: {0}, Return: {1}", outParams("JobId"), outParams("ReturnValue"))

我想你可以假设Rev#,ID和IsMachineTarget是正确的,因为我从我在机器之前查询的信息中提取它们。

**当我将此特定请求发送到计算机时,它仅将其记录到CCM / Logs AppDiscovery中。它以4行显示:它获得了请求(不是专门卸载而是查询),执行检测,发现应用程序和检测到的应用程序部署。

记录完后,它什么也没做。这几乎就好像没有得到“卸载”或“安装”部分。 **

有人有处理这个的经验吗?我知道还有其他解决方案,但我正在尝试自己的工作。我可以通过powershell做到这一点,但如果可能,我宁愿不这样做。

.net wmi wmi-query sccm
1个回答
0
投票

我最终得到了这个工作。我有一个生产应用程序,可以帮助我加快服务器场上的Windows更新。部分原因是重试应用程序和更新安装。

using (var searcher = new ManagementObjectSearcher(string.Format(@"\\{0}\root\CCM\ClientSDK", strComputerName, "SELECT * FROM CCM_Application"))
foreach (var obj in searcher.Get())
    if (((string)obj["Name"]).Equals(strApplicationName))
        using (var mInv = new ManagementClass(string.Format(@"\\{0}\root\CCM\ClientSDK", strComputerName), "CCM_Application", null))
        {
            ManagementBaseObject inParams = mInv.GetMethodParameters("Install");
            inParams["EnforcePreference"] = (uint)0;
            inParams["Id"] = obj["Id"];
            inParams["IsMachineTarget"] = obj["IsMachineTarget"];
            inParams["IsRebootIfNeeded"] = false;
            inParams["Revision"] = obj["Revision"];
            mInv.InvokeMethod("Install", inParams, null);
        }
© www.soinside.com 2019 - 2024. All rights reserved.