Управление сервисами
Этот пример относится только к Windows PowerShell 5.1.
Существует восемь основных командлетов службы , предназначенных для широкого спектра задач службы. В этой статье рассматривается только перечисление и изменение состояния выполнения для служб. Список командлетов службы можно получить с помощью Get-Command *-Service
. Сведения о каждом командлете можно найти с помощью Get-Help <Cmdlet-Name>
таких командлетов, как 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
Получение удаленных служб
С помощью Windows PowerShell можно использовать параметр ComputerName командлета Get-Service
для получения служб на удаленных компьютерах. Параметр ComputerName принимает несколько значений и подстановочные знаки, что позволяет получить службы на нескольких компьютерах с помощью одной команды. Например, приведенная ниже команда получает службы на удаленном компьютере Server01.
Get-Service -ComputerName Server01
Начиная с PowerShell 6.0 *-Service
командлеты не имеют параметра ComputerName . Получать службы на удаленных компьютерах можно с помощью компонента удаленного взаимодействия PowerShell. Например, приведенная ниже команда получает службы на удаленном компьютере Server02.
Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }
Также управлять службами можно при помощи других командлетов *-Service
. Дополнительные сведения о службе удаленного взаимодействия PowerShell см. в разделе about_Remote.
Получение необходимых и зависимых служб
Командлет Get-Service имеет два параметра, которые удобно использовать при администрировании служб. Параметр DependentServices получает службы, которые зависят от данной службы.
Параметр RequiredServices получает службы, от которых зависит служба 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
Параметр DependentServices получает, для которых требуется служба 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
Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
Format-Table -Property Status, Name, RequiredServices, DependentServices -auto
Остановка, запуск, приостановка и перезапуск служб
Все командлеты Service имеют схожую общую форму. Службы можно указать по общему имени или отображаемому имени, они также принимают списки и подстановочные знаки в качестве значений. Для остановки очереди печати принтера используйте:
Stop-Service -Name spooler
Чтобы запустить средство 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>
Обратите внимание, что вы получаете повторное предупреждение о запуске spooler печати. При выполнении операции службы, которая занимает некоторое время, 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 : can't 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
. Например, приведенная ниже команда перезапускает службу очередь печати принтера на удаленном компьютере Server01.
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
Задание свойств службы
Командлет Set-Service
изменяет свойства службы на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы.
Командлет Set-Service также имеет параметр StartupType, позволяющий изменять тип запуска службы.
Чтобы использовать Set-Service
в Windows Vista и более поздних версиях Windows, откройте PowerShell с помощью параметра "Запуск от имени администратора ".
Дополнительные сведения см. в статье о Set-Service.
См. также
PowerShell