проверка скрипта, если в настоящее время sccm устанавливает программное обеспечение

413
sdjuan

Есть сценарий, который перезагружает большое количество компьютеров каждые 2 часа, когда ни один пользователь не вошел в систему. Сценарий спит произвольно до 1 часа 59 минут после запуска перед тестированием, если пользователь вошел в систему и никто не перезагружает компьютер. Мы внедряем скрипт через пакет SCCM с повторением в 2 часа и всегда перезапускаем.

Мы не хотим мешать установке программного обеспечения SCCM путем перезагрузки в середине установки SCCM, поэтому было бы полезно узнать, как проверить, устанавливает ли SCCM или какой-либо другой сервис в настоящее время установку программного обеспечения, чтобы в этом случае перезагрузка могла быть запрещена.

1

1 ответ на вопрос

1
alx9r

Ваш скрипт перезагрузки должен остановить службу CcmExec и подождать, пока он войдет в остановленное состояние. Он должен перезагрузиться только после остановки службы. AFAICT, когда служба получает сигнал остановки, она безопасно выполнит все свои задачи, включая любые текущие установки.

Спасибо, что нашли время, чтобы прочитать это до конца. Если это работает, это отличное решение. Тестирует ваше решение во время перезагрузки системы. Может потребоваться несколько дней для подтверждения, и если это произойдет, я приму ваш ответ. sdjuan 8 лет назад 0
Между тем у меня возникают проблемы с поиском какой-либо документации по сервису ccmexec, но по иронии судьбы есть некоторая документация для unix и linux: https://technet.microsoft.com/en-us/library/jj573937.aspx sdjuan 8 лет назад 0
Я не уверен, что есть много документов. Это просто обычный сервис Windows. Этот однострочный Powershell должен работать, чтобы остановить его: Get-Service CcmExec | Стоп-Service alx9r 8 лет назад 0
Спасибо, я знаю, как запустить и остановить сервис. Проблема заключается в том, что он делает, как вы говорите, «безопасно завершите все свои задачи, включая любые текущие установки», прежде чем остановиться. Это та часть, которую я хотел бы видеть документированной и относящаяся к ccmexec, а не ко всем службам Windows. Поскольку в системах, над которыми я работаю, не включена поддержка PowerShell (это не мое решение), я использую VB-скрипт для остановки через вызовы WMI. Вы были очень полезны, и я ценю это, но мне также нужно учитывать, что может произойти, когда я развернусь на нескольких тысячах компьютеров без тщательного изучения и тестирования. Ура! sdjuan 8 лет назад 0
Некоторые из установок, которые мы развертываем, занимают часы, поэтому я обеспокоен тем, что что-то может пойти не так, как, например, таймаут. Например, рассмотрим вопросы, поднятые здесь: http://stackoverflow.com/questions/25178553/gracefully-handling-shutdown-of-a-windows-service Я не утверждаю, что вы не правы, просто я должен быть осторожен. еще раз спасибо sdjuan 8 лет назад 0
Я понимаю ваши проблемы. Я обнаружил скудную небольшую документацию от Microsoft, которая точно описывает подробное поведение SCCM. alx9r 8 лет назад 1
Чтобы добавить к вашему рассмотрению: [Вот некоторые свидетельства причинения CcmExec самоповреждений, связанных с перезагрузкой] (https://social.technet.microsoft.com/Forums/en-US/1569e1e2-91bc-435d-8998-beb817d5b453/waiting -для пользователей-входа? форум = configmanagergeneral). Эта проблема остается с SCCM 2012 r2 sp1 cu2. Я только воспроизвел это на этой неделе. alx9r 8 лет назад 1
Спасибо за эту ссылку. Последние несколько строк подтверждают: «Мы также добавили некоторую логику в наши автоматические перезагрузки во время установки, чтобы остановить службу ccmexec, дождаться ее завершения, подождать еще несколько секунд, а затем перезагрузить компьютер. или, по крайней мере, значительно снизили частоту. " sdjuan 8 лет назад 0
@sdjuan Я думал, что это была самая неприятная линия из всех. На случай, когда какой-либо другой процесс или пользователь вызывает перезагрузку, CcmExec не обрабатывается теми же самыми детскими перчатками. alx9r 8 лет назад 0
Я не слишком обеспокоен инициированными пользователями перезагрузками, так как в моей среде их мало и они далеко друг от друга, и должен быть минимальный, надеюсь, нулевой, процесс, отличный от инициирующей перезагрузку SCCM при установке SCCM, так что для меня это заверение , YMMV sdjuan 8 лет назад 0
Вы счастливый админ. :) alx9r 8 лет назад 0
Теперь, когда у меня было немного времени, чтобы попробовать это: ccmexec - это процесс, а не служба, и, к сожалению, не завершает работу корректно, по крайней мере, не через vbscript / WMI, который я использую. Я попытался закрыть и подождать, пока он закроется, и он завершил установку браузера chrome в последовательности задач, а в последовательности задач говорилось, что установка завершилась неудачно, а при повторной попытке - снова. Насколько я могу судить, win32_process имеет только terminate (), чтобы остановить процесс. Делать больше тестов сейчас. sdjuan 8 лет назад 0
Поскольку кажется, что ccmexec запускается только во время установки программного обеспечения, я думаю сейчас просто проверить работоспособность ccmexec и, если это так, не перезагружаться в этом случае sdjuan 8 лет назад 0
Нет, это не сработает, поскольку ccmexec запускает все системы, которые я проверял, даже если в данный момент не устанавливается sdjuan 8 лет назад 0
`ccmexec` - * определенно * сервис для всех моих клиентов. Он называется «Узел агента SMS» в консоли MMC служб. Консоль служб отображает WMI `DisplayName` _не_ WMI` Name`. Служба `CcmExec` запускает процесс под названием` CcmExec.exe`. Вам нужно остановить службу, а не убивать процесс. alx9r 8 лет назад 1
Ой! Я вижу это как в процессах, так и в услугах сейчас. Когда я раньше смотрел это показывало только в процессах. Я попробую еще немного. sdjuan 8 лет назад 0
Поэтому ручная остановка из панели управления services.msc из ccmexec, также известного как «узел агента sms» во время последовательности задач, устанавливающей 12 + MSI с последующим перезапуском, не остановила последовательность задач. Он прошел через все MSI, а затем перезагрузил компьютер, прежде чем остановка сделала свое дело. Я сейчас ступаю в мутную воду. sdjuan 8 лет назад 0
Я прошел тестирование и принял ваш ответ. Как уже упоминалось, я не смог остановить ccmexec, когда выполнялась последовательность задач, и это нормально, поскольку сценарий не пытается перезагрузиться, пока выполняется эта последовательность задач, что является желаемым результатом. Затем я проверил остановку ccmexec при индивидуальном развертывании нескольких приложений и программ, и служба изящно остановилась и после задержки перезагрузки запустилась как обычно и продолжила все оставшиеся установки. Спасибо за вашу помощь. sdjuan 8 лет назад 1
Спасибо за сообщение о вашем тестировании. Я немного узнал в процессе. alx9r 8 лет назад 0
SCCM может вызвать запуск сценария перезагрузки с использованием запланированных задач. CcmExec использует ту же стратегию для управления собой. alx9r 8 лет назад 0
Я переучился в 1000-й раз, чтобы сделать ручной тест, прежде чем обвинять систему. Это была ошибка скрипта, часть кода исчезла из скрипта во время очистки. Работаю снова, но мне все еще потребуются недели, чтобы полностью подтвердить, что нет никаких проблем. Вот вывод журнала: запуск сценария в 26.02.2016 8:47:42 пользователь вошел в систему 26.02.2016 8:48:43 запуск сценария в 26.02.2016 8:51:00 Остановка ccmexec ccmexec остановлен перезагрузкой системы в 26.02.2016 в 8:55:30 после 4-минутной задержки запуска сценария в 26.02.2016 в 8:59:23 sdjuan 8 лет назад 0

Похожие вопросы