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

Использование командлета PowerShell Restart-Service со службой, имеющей имя экземпляра

Я хочу перезапустить службу на удаленном компьютере с помощью PowerShell. У сервиса есть отображаемое имя и имя экземпляра. Могу ли я использовать для этого командлет Restart-Service? Я не вижу параметра instancename и не могу заставить синтаксис "displayname $ instancename" работать.

Этот синтаксис не работает:

Invoke-Command -Session $session -ScriptBlock {Restart-Service -displayname 'DisplayName$InstanceName' -PassThru}

Сначала я подумал, что проблема в символе $, но обнаружил, что этот синтаксис действительно работает:

Get-Service 'displayname$instancename'

Попробуйте переключиться на одинарные кавычки в первой команде. Двойные кавычки предшествуют замене переменных.

Я использую следующий код для перезапуска служб в удаленных системах. Возможно, вам потребуется добавить -credentials отметьте, если у вас нет разрешений. Это действительно хорошо, потому что это работает и на серверах 2003 / Windows XP.

$Service = "InstanceNameOfService"
$Computer = "MyComputer"
$varService = Get-WmiObject -computername $Computer -class win32_service | Where-Object { $_.Name -eq $Service }
$varService.restartservice()