Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот пример относится только к 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
Остановка, запуск, приостановка и перезапуск служб
Командлеты службы имеют одинаковую общую форму. Услуги можно указать по общему или отображаемому имени, и они могут принимать в качестве значений списки и подстановочные знаки. Чтобы остановить диспетчер печати, используйте:
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>
Обратите внимание, что вы получаете повторяющееся предупреждение о запуске диспетчера печати. При выполнении операции службы, которая занимает некоторое время, 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
. Например, следующая команда перезапускает службу spooler на удаленном компьютере Server01.
Invoke-Command -ComputerName Server01 {Restart-Service Spooler}
Задание свойств службы
Командлет Set-Service
изменяет свойства службы на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы.
Командлет Set-Service также имеет параметр StartupType, который позволяет изменить тип запуска службы.
Чтобы использовать Set-Service
в Windows Vista и более поздних версиях Windows, откройте PowerShell с помощью параметра "Запуск от имени администратора ".
Дополнительные сведения см. в разделе Set-Service
См. также
PowerShell