![]() |
Скрипт на отключение служб
Добрый день, уважаемые системные администраторы.
Стоит задача, автоматизировать процесс. Отключение определенной службы, проверка (завершила ли работу служба или нет, если нет то "алярм") И после перезагрузка. Загвоздка в том, как организоваться проверку отключилась ли служба или нет. Буду рад любым идеями. Спасибо. |
Как застопить службу я разобрался.
Самое интересно как организовать проверку остановлена ли служба? |
Цитата:
sc /? и после вывода основной справки нажмите Y чтобы увидеть дополнительную справку для команды с параметром query, т.е. для sc query |
По типу остановки службы можно условно разделить на две группы: напрямую и через реестр. В первом случае служба может быть остановлена с помощью командлета Stop-Service, во-втором - путем поиска одноименного со службой ключа реестра в разделе HKLM\SYSTEM\CurrentControlSet\Services, однако стоит учитывать, что изменения в таком случае вступят в силу только после перезагрузки системы, а потому проверка на "отключенность" должна производиться также через реестр. В противном случае достаточно воспользоваться командлетом Get-Service:
Код:
.({Write-Warning 'служба по-пержнему выполняется'},{Restart-Computer})[(Get-Service имя_сервиса).Status -eq 1] |
Код:
sc query "spooler" | findstr /i state | findstr /i STOPPED && ( |
Спасибо за ответы.
greg zakharov, Цитата:
Что означает -eq 1? Спасибо. |
Цитата:
|
Цитата:
Код:
операнд1 -eq операнд2 bool неявно преобразуется в int по этому индексу берётся блок кода из массива оператор контекста точка его исполняет |
Цитата:
|
Цитата:
Цитата:
Цитата:
Можно ведь просто сказать, что у статусов сервисов существует конкретное [int32] значение свойства, которое можно подсмотреть по: Код:
(gsv).status.value__ |
YuS_2, имелось в виду, что pwsh исповедует приведение к булеву типу в стиле JavaScript, однако при этом статус может быть нулевыми или просто пустым значением (даже если в действительности это не так).
К слову, Busla уже не первый раз берется утверждать вещи нелепые и далёкие от истины. |
Цитата:
|
Цитата:
это дешёвые понты: накорябать такое решение, которое топикстартер заведомо не поймёт Цитата:
Цитата:
|
Цитата:
SERVICE_STOPPED - 0x00000001 SERVICE_START_PENDING - 0x00000002 SERVICE_STOP_PENDING - 0x00000003 SERVICE_RUNNING - 0x00000004 SERVICE_CONTINUE_PENDING - 0x00000005 SERVICE_PAUSE_PENDING - 0x00000006 SERVICE_PAUSED - 0x00000007 где: Цитата:
Код:
(gsv).status|gm Цитата:
Код:
gsv|? status -eq 4 Цитата:
ЗЫ А вообще, я за то, чтобы при появлении такого утверждения: Цитата:
Цитата:
|
Busla, если латеральная лямбда "дешёвые понты", которые по-вашему могут разуметь лишь горстка избранных форума (к слову, не названных), что же тогда в вашем представлении обобщенные делегаты? Видимо в них вовсе нет нужды, ибо "дешёвые понты". Или рефлексия. Тоже "понты".
О, сослаться на модераторов ещё какой "хороший ход"! Цепляться за форум, точнее за сомнительно заработанную репутацию - вот истинная причина вашего словоблудия. Если не влом, поищите на форуме свои каки, в которых вы утверждаете полную чушь, в то время как прочие дают адекватные ответы. |
@greg zakharov простите вы не смотрели если в агрументе несуществеющий сервис то ответ неправильный
HTML код:
$service_name = 'zzz'; .({Write-Warning ('service {0} running' -f $service_name)},{Write-Warning ('service{0} stopped' -f $service_name)})[(Get-Service $service_name ).Status -eq 1] |
Serguei Kouzmine, все верно. Речи же не было о несуществующем сервисе, так? В противном случае, при Get-Service обращенным в $null и (-ErrorAction 0), породить исключение индекса. Если нужен пример:
Код:
$service = 'foo' |
Время: 08:15. |
Время: 08:15.
© OSzone.net 2001-