Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление служб по маске

Ответить
Настройки темы
CMD/BAT - [решено] Удаление служб по маске

Пользователь


Сообщения: 136
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте.

Просьба помочь в написании скрипта по удалению служб по маске.
Например, есть список служб типа: service_1, service_2 и т.д.
Необходимо удалить все службы с именем service_*

Отправлено: 14:00, 03-12-2019

 

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


VBS
Код: Выделить весь код
Maska = "^winsolit_.*$"

Set ProcL = GetObject("winmgmts:").ExecQuery("Select * From Win32_Process")

With CreateObject("VBScript.RegExp")
    .Pattern = Maska
    .IgnoreCase = True
    .Global = True
    For Each iProc In ProcL
        If .Test(iProc.Name) Then
            iProc.Terminate
        End If
    Next
End With

MsgBox "Done"
Единственное, написать регулярку
Тестировал на старой игре winsolit
Скопировал несколько раз exe с разными именами и запустил их.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 05-12-2019 в 17:15.


Отправлено: 16:59, 05-12-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Цитата kirillius:
Если служба запущена либо для нее открыт дескриптор
другим процессом, эта служба будет помечена
для удаления. »
Ну давайте будем из вас информацию клещами тащить.
Служба остановлена?
Нет ли там дескрипторов от других процессов?

Код: Выделить весь код
(get-service service_*).name |foreach {
stop-service $_
sc.exe delete $_
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 17:19, 05-12-2019 | #12


Пользователь


Сообщения: 136
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
(get-service service_*).name |foreach {
stop-service $_
sc.exe delete $_
} »
Код: Выделить весь код
Не удается привязать аргумента к параметру "Name", так как он имеет значение NULL.
Все службы по данной маске остановлены. Также, по одиночке они спокойно удаляются из cmd путём sc delete.
Скрипт выше тоже удалил службу, когда я вместо маски прописал полное её имя.

Отправлено: 15:27, 06-12-2019 | #13


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Какой-то из этих вариантов работает?
Код: Выделить весь код
get-service service_*
get-service "service_*"
get-service service*

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 18:48, 06-12-2019 | #14


Пользователь


Сообщения: 136
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Какой-то из этих вариантов работает? »
Работают все. Выводится список служб.

Отправлено: 14:11, 09-12-2019 | #15


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Хорошо. А такие варианты?
Код: Выделить весь код
(get-service service_*).name
get-service service_* |select -expand name

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 14:39, 09-12-2019 | #16


Пользователь


Сообщения: 136
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Хорошо. А такие варианты? »
Тоже отработало.

Отправлено: 09:33, 10-12-2019 | #17


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Интересное кино.

А так работает?
Код: Выделить весь код
$services = get-service service_*
foreach ($service in services) {
stop-service $service
sc.exe delete $service.name
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:00, 10-12-2019 | #18


Пользователь


Сообщения: 136
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
$services = get-service service_*
foreach ($service in services) {
stop-service $service
sc.exe delete $service.name
} »
Ошибок не пишет (вообще ничего не пишет), но службы не удаляет.

Отправлено: 10:21, 10-12-2019 | #19


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Интересное кино.
А так работает? »
Отличная демонстрация того, что все эти "хакерские" выверты и прочая магия допустимы в интерактивном режиме. А скрипты надо писать однозначно.


kirillius, попробуйте добавить в цикл вывод найденных сервисов
у Stop-Process укажите явно, что вы передаёте, а не надейтесь на приведение типов
внешние файлы вызывайте либо командлетом Start-Process либо оператором контекста &

примерно так
Код: Выделить весь код
$services = get-service service_*
foreach ($service in $services) {
  write-verbose $service.name -Verbose
  stop-service -InputObject $service
  & sc.exe delete $service.name
}
а на самом деле просто потерян $ перед services

и этого бы не случилось, если бы не городили на пустом месте кучу переменных, а писали бы конвейером

p.s. и в общем случае оно не будет работать - сломается на службах с пробелом в имени

Последний раз редактировалось Busla, 10-12-2019 в 11:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:46, 10-12-2019 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление служб по маске

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Удаление каталогов по маске. mishgan2004 Скриптовые языки администрирования Windows 4 20-07-2017 14:00
CMD/BAT - Удаление по маске X.509 Скриптовые языки администрирования Windows 13 06-05-2014 00:24
CMD/BAT - Удаление файлов по маске IlyaBarkov Скриптовые языки администрирования Windows 6 15-10-2013 05:03
CMD/BAT - Удаление скрытых папок по маске chatlaninsan Скриптовые языки администрирования Windows 5 07-09-2009 17:22




 
Переход