Powershell: как запустить / остановить службу и все обязательные службы, которые еще не запускались при запуске? - PullRequest
0 голосов
/ 09 апреля 2020

Как мне добиться следующего в паре однострочников Powershell (один для запуска, один для остановки)?

Я хочу запустить службу MyService в Powershell, а также запустить все другие службы, обязательные от MyService (т. е. службы, от которых MyService зависит ), которые еще не запущены . Затем я хочу остановить MyService и все службы, которые я первоначально запустил с MyService , но не все другие службы, на которых MyService зависит от того, были ли уже запущены когда я начал MyService .

Чтобы уточнить: Если MyService Требуется Service1 , Service2 и Service3 и Service3 is также Обязательно by UnrelatedService и уже работает для UnrelatedService , тогда мне не нужно / не нужно запускать Service3 для запуска MyService . Также я хочу остановить Service3 , когда я остановлю MyService , потому что тогда UnrelatedService завершится ошибкой. Я делаю хочу остановить Сервис1 и Сервис2 при остановке MyService , поскольку они Требуются только MyService .

Во-вторых, я хочу сделать это рекурсивно, чтобы при наличии других RequiredServices до Service1 и Service2 (напомним, Service3 уже запущен, поэтому службы, от которых Service3 зависит ), затем я также хочу запустить те другие службы, на которых Service1 и Service2 Зависит от и которые еще не запущены .

Успешным результатом будет то, что список [все службы, работающие после] Я останавливаю MyService совпадает с списком [все службы, которые работали до] Я запустил MyService и те, от которых он Зависит .

Моя попытка

Get-Service MyService | 
   Select -expand RequiredServices | 
   Start-Service 

Start-Servi ce: Служба 'My Full Service Name (myservice)' не может быть запущена из-за следующей ошибки: Невозможно запустить службу MyService на компьютере '.'. В строке: 1 символ: 57 + Get-Service MyService | Выберите -expand RequiredServices | Start-Service + + CategoryInfo: OpenError: (System.ServiceProcess.ServiceController: ServiceController) [Start-Service], ServiceCommandException + FullyQualifiedErrorId: CouldNotStartService, Microsoft.PowerShell.Commands.StartServiceCommand

1115 *1115* 11 *

1 Ответ

0 голосов
/ 09 апреля 2020

Похоже, вам нужен оператор Foreach-Object. ИМО, ваш конвейер просто не распознает расширенные RequiredServices как объект «службы».

Get-Service MyService | select -ExpandProperty RequiredServices | % {Start-Service $_.Name}

Или более подробно:

Get-Service MyService | Select-Object -ExpandProperty RequiredServices | ForEach-Object {Start-Service $_.Name}

После этого вы начнете свою службу:

Start-Service MyService
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...