SMS 2003 содержал отличную функцию для автоматизации через отличную dll: Microsoft.SystemsManagementServer.Automation.dll. Это позволило автоматизировать SMS с помощью интуитивно понятных объектов, свойств и методов, таких как:
SMSProvider.Packages.Create("NewPackage");
В SCCM 2007, похоже, эта замечательная dll устарела в пользу большего количества кода "собачьего завтрака" в стиле WMI:
var conn = new WMIConnection(@"\\Server\root\sms\site_a", usr, pass);
var queryResults = conn.ExecuteQuery("SELECT * FROM SMS_Package WHERE
Name='" + packageName + "'");
foreach (ManagementObject obj in queryResults)
{
packageID = (string)obj.GetPropertyValue("PackageID");
}
У меня возникает соблазн написать свои собственные классы скелета на основе этих вызовов wmi. Все, что кажется необходимым для базовой автоматизации, это: SccmServer, SccmPackage, SccmProgram и SccmTaskSequence.
Вопрос в том: есть ли у кого-нибудь такие классы обертки, скелета или знает какие-нибудь проекты с открытым исходным кодом, которые я могу использовать или адаптировать? Я ненавижу изобретать велосипед для таких обыденных вещей.
Это не совсем то, что вы ищете, но пробовали ли вы использовать Powershell и SCCM избавиться от некоторых проблем с WMI?
Вы также можете посмотреть на:
Кажется, еще не так много командлетов Powershell, которые обеспечивают тот же уровень функциональности, что и Microsoft.SystemsManagementServer.Automation.dll, но я нашел Расширения сообщества PowerShell для Configuration Manager.