В SCCM для развертывания пакетов есть возможность сделать назначение обязательным и расписание для выхода из системы, а также опции для развертывания пакетов только тогда, когда ни один пользователь не вошел в систему.
Я хочу таким же образом развертывать обновления программного обеспечения. Я не вижу настроек, поэтому предполагаю, что взломать Необходимо использовать обходной путь, и я хотел бы знать, делал ли кто-нибудь это, делает ли это или имеет представление о том, что я могу сделать, чтобы это произошло. Я хорошо разбираюсь в PowerShell, sccm и C #, так что все в этом роде было бы круто. Я использую SCCM 2012 SP1 для справки.
Покопавшись в документации SDK SCCM, я закончил тем, что сделал обновления доступными. но не обязательно. Это заполняет класс WMI с именем CCM_SoftwareUpdate в пространстве имен root / ccm / clientsdk, см. Вот. Простой запрос, например
"SELECT * FROM CCM_SOFTWAREUPDATE WHERE COMPLIANCESTATE=0 AND EVALUATIONSTATE < 2"
предоставит вам доступные обновления, которые еще не были установлены. Когда обновления будут установлены, в конечном итоге они будут удалены из этого пространства имен, но это займет некоторое время. Если по какой-либо причине вам необходимо остановить и перезапустить установку обновлений, это поможет отфильтровать частично установленные обновления. На странице msdn есть дополнительная информация о различных состояниях соответствия и состояниях eval. Затем этот массив обновлений передается методу InstallUpdates класса CCM_SoftwareUpdatesManager в том же пространстве имен, и вы можете отслеживать ход обновлений по отдельности (вот почему я решил передавать свои обновления этому методу одно за другим, а не все на Один раз. Передача их всех сразу на самом деле мало что значит, кроме их постановки в очередь и установки по одному, судя по тому, что я видел).
Я создал быстрый и грязный графический интерфейс на C # (вы можете просмотреть его Вот), который я установил как сценарий выхода в групповой политике, поэтому при его запуске пользователи не могут выйти из него ctl alt del или нажимать кнопки, чтобы закрыть окно. Это настолько близко к реальному, насколько это возможно (у нас есть контроль над фоном входа в систему, поэтому для единообразия я сделал фон моего приложения таким же).
Печально то, что мы, вероятно, не примем это решение из-за множества ноутбуков в нашей среде. Никто не хочет выключать свой ноутбук и брать его домой на день только для того, чтобы ждать неопределенное время с установкой обновлений, что приведет к в это время кажется навсегда.