Добавление / удаление устройств из коллекции SCCM с использованием. Net Core - PullRequest
0 голосов
/ 18 апреля 2020

Я использую. Net Core и Microsoft.Management.Infrastructure пакет nuget для запроса коллекций SCCM и успешного получения устройств.

using Microsoft.Management.Infrastructure;
...
string Namespace = @"root\cimv2";
string Query = "SELECT * FROM SCCM_collection where name ='$param'";
CimSession mySession = CimSession.Create("Computer_B");
IEnumerable<CimInstance> queryInstance = mySession.QueryInstances(Namespace, "WQL", Query);

Однако мне нужно программно добавить / Удалите правило членства в коллекции SCCM, чтобы я мог манипулировать устройствами внутри коллекции SCCM, как указано в этом блоге .

Я знаю, что мы можем манипулировать коллекциями SCCM, используя. net пакет Framework microsoft.configurationmanagement.managementprovider но так как я использую. NET Core, поэтому этот пакет не может быть использован ,

Есть ли способ добавить / удалить устройства в / из коллекции SCCM, используя. Net Core?

1 Ответ

0 голосов
/ 19 апреля 2020

Я никогда не нашел официального слова по этому поводу, но, насколько я понимаю, microsoft.configurationmanagement.managementprovider - это просто своего рода оболочка, которая позволяет легко переносить ваши старые примеры vbscript, которые следуют рекомендациям MS, в sccm. Все эти примеры просто вызывают методы WMI, в них нет ничего, что SCCM специфицирует c, поэтому вы всегда можете использовать basi c WMI для записи этого без дополнительных вещей.

Так что вы можете просто использовать System.Management и затем напишите это так:

ManagementClass collQuery = new ManagementClass(@"\\<siteserver>\root\sms\site_<sitecode>", "SMS_CollectionRuleQuery", null);
ManagementObject collQueryInstance = collQuery.CreateInstance();

collQueryInstance["QueryExpression"] = "Select * from SMS_R_System";
collQueryInstance["RuleName"] = "Members of collection";

ManagementObject collInstance = new ManagementObject(@"\\<siteserver>\root\SMS\site_<sitecode>:SMS_Collection.CollectionID='<CollID>'");
ManagementBaseObject inParams = collInstance.GetMethodParameters("AddMembershipRule");

inParams.SetPropertyValue("collectionRule", collQueryInstance);

ManagementBaseObject outParams = collInstance.InvokeMethod("AddMembershipRule", inParams, null);

и оно должно работать. Конечно, вы должны перевести все вызовы в «нормальный» синтаксис WMI, но я думаю, что этот пример должен предоставить вам основы

...