Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 19.05.2020
Сообщений: 30

Скрипт для проверки и удаления сервисов и задач в планировщике

01.09.2020, 12:31. Показов 5851. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день, помогите пожалуйста с написанием скрипта, который проверит по имени наличие задания в планировщике или установленного сервиса, и если он есть - удалит его. С остановкой все более менее понятно, а вот с удалением - застрял.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2020, 12:31
Ответы с готовыми решениями:

Python-скрипт для просмотра состояния сервисов на ArcGIS Online
Здравствуйте, нужно написать Python-скрипт для просмотра состояния сервисов на ArcGIS Online. Дайте пожалуйста литературу или ссылку на...

Создание задач в планировщике из BAT
Здравствуйте. Появилась необходимость создавать задачи в планировщике на разных машинах путем импорта xml через bat файл. chcp 1251...

Не запускается задача в планировщике задач
Хотел уточнить: 1. ПЗ не сработает, если не авторизован пользователь, который создал задачу? 2. ПЗ сработает, даже если не авторизован...

2
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
01.09.2020, 12:44
так или или?

Поскольку правила форума (как и зоркие странные админы) запрещают давать ссылки на гугл (а именно там и стоит начинать искать), то приведу материалы тут, читайте, изучайте:

[SPOILER]Управление службами Windows с помощью PowerShell
date27.07.2020
user itpro
directory PowerShell, Windows 10, Windows Server 2016
comments комментария 2
В Windows вы можете управлять службами не только из графической консоли services.msc или утилиты командной строки Sc.exe (первоначальна включалась в пакет ресурсов Resource Kit), но и с помощью PowerShell. В этой статье мы смотрим различные сценарии управления службами Windows с помощью PowerShell.


Содержание:
Основные командлеты PowerShell для управления службами Windows
Остановка, запуск, приостановка и перезапуск служб из PowerShell
Set-Service – изменение настроек службы Windows
Создание и удаление служб Windows c помощью PowerShell
Изменение учетной записи для запуска службы
Основные командлеты PowerShell для управления службами Windows
Существует восемь основных командлетов Service, предназначенных для просмотра состояния и управления службами Windows.

Чтобы получить весь список командлетов Service, введите команду:

Get-Help \*-Service

управление службами windows из powershell

Get-Service — позволяет получить службы на локальном или удаленном компьютере, как запущенные, так и остановленные;
New-Service – создать службу. Создает в реестре и базе данных служб новую запись для службы Windows;
Restart-Service – перезапустить службу. Передает сообщение об перезапуске службы через Windows Service Controller
Resume-Service – возобновить службы. Отсылает сообщение о возобновлении работы диспетчеру служб Windows;
Set-Service — изменить параметры локальной или удаленной службы, включая состояние, описание, отображаемое имя и режим запуска. Этот командлет также можно использовать для запуска, остановки или приостановки службы;
Start-Service – запустить службу;
Stop-Service – остановить службу (отсылает сообщение об остановке диспетчеру служб Windows);
Suspend-Service приостановить службу. Приостановленная служба по-прежнему выполняется, однако ее работа прекращается до возобновления работы службы, например с помощью командлета Resume-Service.
Получить подробное описание и примеры использования конкретного командлета можно через Get-help:

Get-Help Start-Service

Get-Help Start-Service

Get-Service: получаем список служб и их состояние

Получить список и состояние (Running/Stopped) службы на локальном или удаленном компьютере можно с помощью командлета Get-Service. Параметр -Name позволяет делать отбор по имени службы. Имя службы можно задать с использованием подстановочного символа *.

Get-Service просмотр состояния служб

Если вы не знаете точное имя службы, есть возможность найти службы по отображаемому имени с помощью параметра –DisplayName. Можно использовать список значений и подстановочные знаки.

Get-Service поиск по имени службы.

Командлет Get-Service можно использовать для получения состояния служб на удаленных компьютерах, указав параметр -ComputerName. Можно опросить статус службы сразу на множестве удаленных компьютеров, их имена нужно перечислить через запятую. Например, приведенная ниже команда получает состояние службы Spooler на удаленных компьютерах RM1 и RM2.

Get-Service spooler –ComputerName RM1,RM2

Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Stopped spooler Print Spooler
Вывести все свойства службы позволит командлет Select-Object:

Get-Service spooler | Select-Object *

вывести все свойства службы windows

Командлет Select-Object позволит вывести определенные свойства службы. Например, нам нужно вывести имя, статус и доступные возможности службы Spooler:

Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*

Get-Service - можно ли перезапускать, приостаналивать службу windows

Командлет Get-Service имеет два параметра, которые позволяют получить зависимости служб:

Параметр -DependentServices позволяет вывести службы, которые зависят от данной службы;
Параметр -RequiredServices позволяет вывести службы, от которых зависит данная служба.
Приведенная ниже команда выводит службы, необходимые для запуска службе Spooler:

Get-Service –Name Spooler -RequiredServices

Get-Service RequiredServices зависимости служб в windows

Следующая команда выводит службы, которые зависят от службы Spooler:

Get-Service –Name Spooler -DependentServices

Get-Service DependentServices

При необходимости найти службы с определенным состоянием или параметрами, используйте командлет Where-Object. Например, получим список запущенных служб со статусом Running:

Get-Service | Where-Object {$_.status -eq 'running'}

Get-Service | Where-Object status -eq 'running' - вывести запущенные службы

Для вывода служб с типом запуска Manual, выполните команду

Get-Service | Where-Object {$_.starttype -eq 'Manual'}

Get-Service | Where-Object {$_.starttype -eq 'Manual'

Проверить, что в системе имеется указанная служба:

if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
{
Write-host "ServiceTest exists"
}

Остановка, запуск, приостановка и перезапуск служб из PowerShell
Остановить службу можно с помощью командлета Stop-Service. Чтобы остановить службу печати, выполните команду:

Stop-Service -Name spooler

Командлет Stop-Service не выводит никаких данных после выполнения. Чтобы увидеть результат выполнения команды, используйте параметр -PassThru.

Командлет Stop-Service - остановит службу

Обратите внимание, что не каждую службу можно остановить. Если есть зависимые службы, то получите ошибку

Cannot stop service because it has dependent services. It can only be stopped if force flag set.
Stop-Service - ошибка Cannot stop service because it has dependent services. It can only be stopped if force flag set

Для принудительной остановки используйте параметр –Force. Вы должны помнить, что остановятся также все зависимые службы:

Stop-Service samss –Force -Passthru

Следующая команда остановит перечисленные службы (bits,spooler) со статусом ”Running”:

get-service bits,spooler | where {$_.status -eq 'running'} | stop-service –passthru

остановить несколько служб из powershell

Иногда службы зависают в статусе Stopping и их процессы приходится завершать принудительно.
Командлет Start-Service запускает остановленные службы:

Start-Service -Name spooler -PassThru

Start-Service -запуск службы

Служба не запустится, если есть остановленные зависимые службы. Чтобы их найти и включить:

get-service samss | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}

Start-Service запустить службу и все зависимые службы

Командлет Suspend-Service может приостанавливать службы, допускающие временную приостановку и возобновление. Для получения сведений о возможности временной приостановки конкретной службы используйте командлет Get-Service со свойством «CanPauseAndContinue«.

Get-Service samss | Format-List name, canpauseandcontinue

Get-Service canpauseandcontinue

Чтобы отобразить список всех служб, работа которых может быть приостановлена, введите команду:

Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"}

список служб, разрешающих приостановку

Приостановим службу SQLBrowser:

Suspend-Service -Name SQLBrowser

Suspend-Service

Для возобновления работы приостановленной службы служит командлет Resume-service:

Resume-Service -Name SQLBrowser

Resume-Service

Следующая команда возобновляет работу всех приостановленных служб:

get-service | where-object {$_.Status -eq "Paused"} | resume-service

Командлет Restart-Service перезапускает службу:

Restart-Service -Name spooler

Restart-Service - перезапуск службы windows

Эта команда запускает все остановленные сетевые службы компьютера:

get-service net* | where-object {$_.Status -eq "Stopped"} | restart-service

Параметр —ComputerName у этих командлетов отсутствует, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command или через пайп:

Например, чтобы перезапустите очередь печати на удаленном компьютере RM1, выполните команду:
Get-Service Spooler -ComputerName RM1 | Start-Service

По умолчанию только администраторы могут запускать/останавливать службы в Windows, но вы можете предоставить права на перезапуск конкретной службы и обычным пользователям.
Set-Service – изменение настроек службы Windows
Командлет Set-Service позволяет изменить параметры или настройки служб на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы. Командлет Set-Service имеет параметр -StartupType, позволяющий изменять тип запуска службы.

Изменим тип запуска службы spooler на автоматический:

Set-Service spooler –startuptype automatic –passthru

Set-Service включить автозапуск для службы

Можно перевести службу на ручной (manual) запуск:

Set-Service spooler –startuptype manual –passthru

ручной запуск службы

Создание и удаление служб Windows c помощью PowerShell
New-Service – командлет для создания новой службы в Windows. Для новой службы требуется указать имя и исполняемый файл (вы можете запустить PowerShell скрипт как службу Windows).

В примере создадим новую службу с именем TestService.

new-service -name TestService -binaryPathName "C:\WINDOWS\System32\svchost.exe -k netsvcs"

New-Service создать новую службу в windows

С помощью параметра Get-WmiObject получим информацию о режиме запуска и описание службы

get-wmiobject win32_service -filter "name='testservice'"

get-wmiobject win32_service -filter "name='testservice'"

Изменить параметры новой службы можно командой

Set-Service -Name TestService -Description ‘My Service’ -StartupType Manual

Set-Service - изменить тип запуска службы

Чтобы удалить службу используйте команду

(Get-WmiObject win32_service -Filter ″name=′TestService′″).delete()

Изменение учетной записи для запуска службы
Вы можете изменить учетную запись, из-под которой запускается служба. Получим имя учетной записи, которая используется для запуска службы TestService

get-wmiobject win32_service -filter "name='TestService'" | Select name,startname

изменить учетную запись для запуска служб

Для изменения имени и пароля учетной записи выполняем команды.

$svc = get-wmiobject win32_service -filter "name='TestService'"
$svc.GetMethodParameters("change")

В результате получаем список параметров метода Change(). Считаем на каком месте находятся параметры StartName и StartPassword – 20 и 21 место соответственно.

svc.GetMethodParameters

$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$nu ll, $null,$null,$null,$null,$null,$null,$nul l,$null,$null, $null,$null,$null,"Administrator","P@ssw 0rd")

Либо вы можете указать имя gMSA аккаунта. Пароль при этом не указывается.

Invoke-WmiMethod - запуск службы из под другого пользователя

Как видите, PowerShell позволяет легко управлять службами Windows. Можно создавать, останавливать, запускать и возобновлять службы, менять их свойства. Большинство командлетов позволяют управлять службами на удаленных компьютерах.

Предыдущая статьяПредыдущая статья
Следующая статья Следующая статья
Читайте далее в разделе PowerShell Windows 10 Windows Server 2016
page
Создание и управление DNS записями и зонами из PowerShell
page
Использование модуля Active Directory PowerShell без установки RSAT
page
Set-ADComputer: добавляем информацию о пользователе в свойства компьютеров AD
блокировка IP адресов правилами брандмауэра
Защита RDP от подбора паролей с блокировкой IP правилами Windows Firewall
Get-WUInstall - установка обновлений Windows модуль PSWindowsUpdate
Модуль PSWindowsUpdate: управление обновлениями Windows из PowerShell
пропадает языковая панель после отключения shadow подключения
Пропадает языковая панель в RDP сеансе после завершения теневой сессии
проверака наличия модуля activedirectory
Управление группами AD с помощью PowerShell
Комментариев: 2
Оставить комментарий

ITshnik 06.09.2019
Что-то уж совсем детская статья
«Параметр —ComputerName у этих командлетов отсутствует, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command. Например, приведенная ниже команда перезапускает службу очередь печати на удаленном компьютере RM1.»
После такого совсем интерес пропал. Открою секрет, можно делать так
Get-Service Spooler -ComputerName RM1 | Start-Service

Ответить

itpro 29.09.2019
Вы правы! Ну вот не знал
0
Любознательный
 Аватар для YuS_2
7401 / 2247 / 359
Регистрация: 10.03.2016
Сообщений: 5,187
01.09.2020, 19:30
Цитата Сообщение от whato Посмотреть сообщение
который проверит по имени наличие задания в планировщике или установленного сервиса, и если он есть - удалит его.
Сначала необходимо определиться, что же требуется, планировщик или сервисы...
Для планировщика:
PowerShell
1
2
3
#Requires -RunAsAdministrator
$name = 'Test'
if(Get-ScheduledTask $name -ea 0){Get-ScheduledTask $name|Unregister-ScheduledTask -confirm:$false}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2020, 19:30
Помогаю со студенческими работами здесь

Создать задачу в планировщике задач
WinExec(PAnsiChar('cmd /c schtasks /create /tn "Loader" /tr "C:\Windows\Loader.exe" /sc OnLogon'), SW_HIDE); помогите реализовать как...

Не запускается батник .bat в Планировщике задач
Всем счастья и здоровья! Прошу вашей помощи! Есть две базы 1с в СУБД PostgreSQL и MS SQL 2014. Запускаю батники в планировщике задач чтобы...

Создать задание в планировщике задач windows 7
Здравствуйте. Необходимо средствами C++ Builder 6 создать задание в планировщике задач windows 7 о запуске его же при старте ОС. И как...

Указать путь в планировщике задач ispmgr
Как верно указать путь в планировщике задач ispmgr до php скрипта? /var/www/site.ru/data/www/site.ru/cron.php В минутах указал...

Не выполняется скрипт в планировщике
Добрый день! Прошу помочь, не выполняется скрипт через планировщик, хотя прекрасно отрабатывается если запустить в ручную. Лог указывает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru