PowerShell: перезапустите службу по имени исполняемого файла - PullRequest
1 голос
/ 18 августа 2011

все

Я реализовал свой первый сценарий PowerShell, который выполняет некоторые настройки, устанавливает ключи реестра и в конце должен перезапустить службы.Проблема в том, что у меня есть только имя исполняемого файла, но не имя службы.Рестарт-Сервис может работать только с названием сервиса.Поиск в Google (да еще и Binging) не дал мне большого результата.

Мне было интересно, есть ли способ перезапустить службу по имени исполняемого файла?

Я знаючто я могу получить процесс по имени исполняемого файла, но просто убить процесс и запустить его снова НЕ является хорошим выбором, поскольку функции запуска / остановки службы не вызываются и могут работать неправильно.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 18 августа 2011

Вы можете попробовать использовать wmi и сделать что-то вроде этого:

(gwmi win32_service | ?{$_.pathname -match "\\executable.exe "}) | Restart-Service
1 голос
/ 18 августа 2011
Get-WmiObject -Class Win32_Service -Filter "PathName LIKE '%PartOfTheName%'" -ComputerName PC1 | Foreach-Object{
    $_.StopService()
    $_.StartService()   
}
0 голосов
/ 03 апреля 2017
#set by logic to determine if the service will restart or not
 $global:ServerWillRestart=$true 

#can be found using the name column of Get-services cmdlet
 $serviceName="Set name of the service" 
if($global:ServerWillRestart){
     $service =Get-Service | where{ $_.Name -eq $serviceName}
do{
    Write-output "The service $ServiceName will is being stopped"
    Stop-Service $service
    Start-Sleep -s 2
}
while($service.WaitForStatus("Stopped"))

do{
    Write-Output "The service $ServiceName will is being started"
    Start-Service $service
    Start-Sleep -s 2
}
while($service.WaitForStatus("Running"))
0 голосов
/ 18 августа 2011

Вы можете сделать это с помощью WMI:

$process = Get-Process sqlservr| select -ExpandProperty Id

Get-WmiObject win32_Service| 
    where {$process -contains $_.ProcessId}|
    foreach {Restart-Service $_.Name}

Редактировать: Изменен скрипт для перезапуска службы, а не просто для ее остановки.

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