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

Нужна помощь в написании сценария PowerShell для проверки состояния службы и запуска, если она остановлена. службы: NomadBranch, BITS, Ccmexec.


person Praveen A Kittur    schedule 25.06.2015    source источник


Ответы (2)


SO — это не место, где люди пишут код для вас, и это не замена туториалу (или место, где его можно найти). Однако, поскольку ваш вопрос достаточно прост, я все равно отвечу. Однако не ожидайте, что это будет происходить часто.

Используйте командлеты *-Service для управления службами. Get-Service -Name 'foo' получает свойства службы с именем "foo". Start-Service -Name 'foo' запускает эту службу, Stop-Service -Name 'foo' останавливает ее.

Вы можете найти остановленные службы, отфильтровав выходные данные Get-Service для тех, которые имеют статус Stopped, и запустить остановленные службы, передав отфильтрованный результат в Start-Service:

$services = 'NomadBranch', 'BITS', 'Ccmexec'

Get-Service | Where-Object {
    $services -contains $_.Name -and $_.Status -eq 'Stopped'
} | Start-Service

Используйте командлет Get-Command, чтобы вывести список командлетов для определенного существительного (здесь: «Сервис»):

Get-Command -Noun 'Service'

и используйте командлет Get-Help, чтобы получить дополнительную информацию о конкретном командлете, например:

Get-Help Get-Service -Full
person Ansgar Wiechers    schedule 25.06.2015

Эй, чувак, ниже функция для запуска службы

Function Start-ServicesNotRunning(){ 
    param 
    ( 
      [string[]]$ServerNames =$(throw "Parameter missing: -ServerNames ServerName1,ServerName2") #get multiple services 
    ) 
    Write-Host -ForegroundColor Yellow "Get Services State..." 
    Get-Service -Name $ServerNames | Sort-Object Status,Displayname  |  
    ForEach-Object { 
        $Displayname = $_.Displayname 
        If($_.Status -eq "Running") 
        {  
           Write-Host $Displayname $_.Status -ForegroundColor Green 
        } Else 
        { 
           Write-Host $Displayname $_.Status $_.StartType -ForegroundColor Red 
           Try 
           { 
               #server startup status is disabled. 
               If($_.StartType -eq "Disabled") 
               {    
                  Write-Host -ForegroundColor Yellow $Displayname "Startup Status To Manual..." 
                  Set-Service -Name $_.Name -StartupType Manual -ErrorAction Stop 
               }  
               #start it if not running 
               Write-Host -ForegroundColor Yellow $Displayname "Starting..." 

               Start-Service -InputObject $_ -PassThru -ErrorAction Stop 
               $_.Refresh() 
               Write-Host $Displayname $_.Status -ForegroundColor Green 
           } 
           Catch 
           { 
              Write-Host -ForegroundColor Red $Displayname $_.Exception.Message 
           } 
        } 
    } 
} 

Я выбираю его из этого образца, https://gallery.technet.microsoft.com/How-to-get-state-and-start-b54c3b9c Надеюсь, это поможет.

person Eric    schedule 16.08.2016