Существует восемь основных служебных командлетов, разработанных для широкого спектра служебных задач. В разделе будут рассмотрены только перечисление и изменение состояния служб. Список остальных служебных командлетов можно получить с помощью команды Get-Help *-Service, а информацию о каждом служебном командлете можно получить с помощью команды Get-Help <имя_командлета>, например, Get-Help New-Service.
Получение служб
Службы локального или удаленного компьютера можно вывести с помощью командлета Get-Service. Как и в случае командлета Get-Process, использование команды Get-Service без параметров выводит список всех служб. Выводимые данные можно отсортировать по именам даже при использовании звездочки (*) в качестве подстановочного знака.
PS> Get-Service -Name se* Status Name DisplayName ------ ---- ----------- Running seclogon Secondary Logon Running SENS System Event Notification Stopped ServiceLayer ServiceLayer
Поскольку настоящее имя той или иной службы не всегда очевидно, может потребоваться поиск служб по отображаемым именам. Можно выполнить поиск по определенному имени, с использованием знаков подстановки, или получить список отображаемых имен.
PS> Get-Service -DisplayName se* Status Name DisplayName ------ ---- ----------- Running lanmanserver Server Running SamSs Security Accounts Manager Running seclogon Secondary Logon Stopped ServiceLayer ServiceLayer Running wscsvc Security Center PS> Get-Service -DisplayName ServiceLayer,Server Status Name DisplayName ------ ---- ----------- Running lanmanserver Server Stopped ServiceLayer ServiceLayer
Параметр ComputerName командлета Get-Service можно использовать для получения служб с удаленных компьютеров. Параметр ComputerName позволяет использовать несколько значений и символы подстановки, что позволяет получить список служб на нескольких компьютерах с помощью одной команды. Например, следующая команда возвращает службы на удаленном компьютере Server01.
Get-Service -ComputerName Server01
Получение обязательных и зависимых служб
Командлет Get-Service имеет два параметра, очень полезных для управления службами. Параметр DependentServices получает службы, зависящие от текущей службы. Параметр RequiredServices получает службы, от которых зависит текущая служба.
Эти параметры просто выводят значения свойств DependentServices и ServicesDependedOn (alias=RequiredServices) объекта System.ServiceProcess.ServiceController, выводимые командой Get-Service, при этом упрощая команды и делая информацию проще для восприятия.
Следующая команда позволяет получить службы, требуемые службой LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -RequiredServices Status Name DisplayName ------ ---- ----------- Running MRxSmb20 SMB 2.0 MiniRedirector Running bowser Bowser Running MRxSmb10 SMB 1.x MiniRedirector Running NSI Network Store Interface Service
Следующая команда позволяет получить службы, для которых требуется служба LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -DependentServices Status Name DisplayName ------ ---- ----------- Running SessionEnv Terminal Services Configuration Running Netlogon Netlogon Stopped Browser Computer Browser Running BITS Background Intelligent Transfer Ser...
Кроме того, можно получить список всех служб, связанных зависимостями. Именно это делает следующая команда, использующая командлет Format-Table для отображения свойств Status, Name, RequiredServices и DependentServices служб компьютера.
Get-Service -Name * | where {$_.RequiredServices -or $_.DependentServices} | Format-Table -Property Status, Name, RequiredServices, DependentServices -auto
Остановка, запуск, приостановка и перезагрузка служб
Все служебные командлеты представлены в одной и той же общей форме. В качестве значений для указания служб могут быть использованы их общие или отображаемые имена, списки и подстановочные знаки. Чтобы остановить очередь печати, используйте команду:
Stop-Service -Name spooler
Чтобы повторно запустить очередь печати принтера после остановки, используйте команду:
Start-Service -Name spooler
Чтобы приостановить очередь печати, используйте команду:
Suspend-Service -Name spooler
Командлет Restart-Service работает так же, как другие служебные командлеты, но далее будут представлены более сложные примеры его использования. В самом простом случае использования указывается имя службы:
PS> Restart-Service -Name spooler WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting... WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting... PS>
Обратите внимание на повторяющееся предупреждающее сообщение о запуске очереди печати принтера. При выполнении служебной операции, требующей некоторого количества времени, Windows PowerShell оповещает о своих попытках выполнить задачу.
Если требуется перезапустить сразу несколько служб, можно создать список служб, отфильтровать его и произвести перезагрузку.
PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping... WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping... Restart-Service : Cannot stop service 'Logical Disk Manager (dmserver)' because it has dependent services. It can only be stopped if the Force flag is set. At line:1 char:57 + Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<< WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting... WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
У этих служебных командлетов нет параметра ComputerName, но их можно использовать на удаленном компьютере с помощью командлета Invoke-Command. Например, следующая команда перезапускает службу Spooler на удаленном компьютере Server01.
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
Установка свойств службы
Командлет Set-Service изменяет свойства службы на локальном или удаленном компьютере. Поскольку состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы. Командлет Set-Service также имеет параметр StartupType, позволяющий изменять тип загрузки службы.
Чтобы использовать командлет Set-Service в Windows Vista и более поздних версиях Windows, необходимо запускать Windows PowerShell командой "Запуск от имени администратора".
Дополнительные сведения см. в разделе Set-Service