Нужна помощь в написании сценария PowerShell для проверки состояния службы и запуска, если она остановлена. службы: NomadBranch, BITS, Ccmexec.
Скрипт для проверки состояния и запуска службы при необходимости
Ответы (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
Эй, чувак, ниже функция для запуска службы
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 Надеюсь, это поможет.