Назад | Перейти на главную страницу

Ошибка автоматической службы PowerShell. Восстановление «Запуск программы», проблема с разрешением «NT Authority \ Local Service»

Я написал простой сценарий PowerShell для запуска уведомления по электронной почте и перезапуска службы при возникновении сбоя службы и тестировал его на своем рабочем столе путем сбоя сервера Windows Audio («Audiosrv»).

Сценарий настраивается для запуска, перейдя в Службы -> щелкните правой кнопкой мыши службу -> Свойства -> Восстановление -> Первые / вторые / последующие сбои -> Запустить программу с параметрами программы, перечисленными ниже.

Учетная запись локальной службы (NT AUTHORITY \ LOCAL SERVICE) запускает этот сценарий при сбое службы, это известно из вывода команды whoami во время выполнения сценария. Эта учетная запись может использовать командлет Send-MailMessage (я получаю электронное письмо), но не может использовать командлет Restart-Service (или Start-Service, или net start, или sc start?). См. Сообщение об ошибке, это то же сообщение об ошибке, полученное при попытке запустить Restart-Service от имени пользователя без прав администратора.

Как я могу временно повысить привилегии, чтобы этот сценарий мог перезапустить службу? Или что мне по другому сделать?


Запустить программу:

C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe

Параметры командной строки:

-File C:\Scripts\StoppedServiceNotifyEmail.ps1



Скрипт Powershell (адреса электронной почты / имена хостов отредактированы):

$serviceName = "Audiosrv"
$serviceDisplayName = "Windows Audio"
$fromAddress = "xxxx@xxxxxxxxx.org"
$toAddress = "xxxx@xxxxxxxxx.org"

$initialFailedBody=@"
<head>
   <style type='text/css'>
       body {
           font-family: Calibri;
           font-size: 11pt;
           color: black;
       }
   </style>
</head>
<body>
    <p>$serviceDisplayName ($serviceName) on $env:computername has failed, attempting to restart the service.</p>
</body>
"@

whoami | Out-File -FilePath C:\Scripts\whoami_after_Audiosrv_fail.txt
Send-MailMessage -smtpServer xxxxxxxxxxxxx -Port xxx -from $fromAddress -to $toAddress -subject "$serviceDisplayName ($serviceName) failed on $env:computername" -body $initialFailedBody -BodyAsHTML -priority High
Start-Sleep -s 10
Restart-Service -Name $serviceName


Вывод ошибок Powershell:

Restart-Service : Service 'Windows Audio (Audiosrv)' cannot be stopped due to the following
error: Cannot open Audiosrv service on computer '.'.
At C:\Util\StoppedServiceNotifyEmail.ps1:82 char:5
+     Restart-Service -Name $serviceName
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (System.ServiceProcess.ServiceController:ServiceControl
   ler) [Restart-Service], ServiceCommandException
    + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Commands.RestartServiceCom
   mand