Get running services windows

Управление службами Windows с помощью PowerShell

В Windows вы можете управлять службами не только из графической консоли services.msc или утилиты командной строки Sc.exe (первоначальна включалась в пакет ресурсов Resource Kit), но и с помощью PowerShell. В этой статье мы смотрим различные сценарии управления службами Windows с помощью PowerShell.

Основные командлеты PowerShell для управления службами Windows

Существует восемь основных командлетов Service, предназначенных для просмотра состояния и управления службами Windows.

Чтобы получить весь список командлетов Service, введите команду:

  • Get-Service — позволяет получить службы на локальном или удаленном компьютере, как запущенные, так и остановленные;
  • New-Service – создать службу. Создает в реестре и базе данных служб новую запись для службы Windows;
  • Restart-Service – перезапустить службу. Передает сообщение об перезапуске службы через Windows Service Controller
  • Resume-Service – возобновить службы. Отсылает сообщение о возобновлении работы диспетчеру служб Windows;
  • Set-Service — изменить параметры локальной или удаленной службы, включая состояние, описание, отображаемое имя и режим запуска. Этот командлет также можно использовать для запуска, остановки или приостановки службы;
  • Start-Service – запустить службу;
  • Stop-Service – остановить службу (отсылает сообщение об остановке диспетчеру служб Windows);
  • Suspend-Service приостановить службу. Приостановленная служба по-прежнему выполняется, однако ее работа прекращается до возобновления работы службы, например с помощью командлета Resume-Service.

Получить подробное описание и примеры использования конкретного командлета можно через Get-help:

Get-Service: получаем список служб и их состояние

Получить список и состояние (Running/Stopped) службы на локальном или удаленном компьютере можно с помощью командлета Get-Service. Параметр -Name позволяет делать отбор по имени службы. Имя службы можно задать с использованием подстановочного символа *.

Если вы не знаете точное имя службы, есть возможность найти службы по отображаемому имени с помощью параметра –DisplayName. Можно использовать список значений и подстановочные знаки.

.

Командлет Get-Service можно использовать для получения состояния служб на удаленных компьютерах, указав параметр -ComputerName. Можно опросить статус службы сразу на множестве удаленных компьютеров, их имена нужно перечислить через запятую. Например, приведенная ниже команда получает состояние службы Spooler на удаленных компьютерах RM1 и RM2.

Get-Service spooler –ComputerName RM1,RM2

Вывести все свойства службы позволит командлет Select-Object:

Get-Service spooler | Select-Object *

Командлет Select-Object позволит вывести определенные свойства службы. Например, нам нужно вывести имя, статус и доступные возможности службы Spooler:

Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*

Командлет Get-Service имеет два параметра, которые позволяют получить зависимости служб:

  • Параметр -DependentServices позволяет вывести службы, которые зависят от данной службы;
  • Параметр -RequiredServices позволяет вывести службы, от которых зависит данная служба.

Приведенная ниже команда выводит службы, необходимые для запуска службе Spooler:

Читайте также:  Удаленное управление до загрузки windows

Get-Service –Name Spooler -RequiredServices

Следующая команда выводит службы, которые зависят от службы Spooler:

Get-Service –Name Spooler -DependentServices

При необходимости найти службы с определенным состоянием или параметрами, используйте командлет Where-Object. Например, получим список запущенных служб со статусом Running:

Для вывода служб с типом запуска Manual, выполните команду

Проверить, что в системе имеется указанная служба:

if (Get-Service «ServiceTest» -ErrorAction SilentlyContinue)
<
Write-host «ServiceTest exists»
>

Остановка, запуск, приостановка и перезапуск служб из PowerShell

Остановить службу можно с помощью командлета Stop-Service. Чтобы остановить службу печати, выполните команду:

Stop-Service -Name spooler

Командлет Stop-Service не выводит никаких данных после выполнения. Чтобы увидеть результат выполнения команды, используйте параметр -PassThru.

Обратите внимание, что не каждую службу можно остановить. Если есть зависимые службы, то получите ошибку

Для принудительной остановки используйте параметр –Force. Вы должны помнить, что остановятся также все зависимые службы:

Stop-Service samss –Force -Passthru

Следующая команда остановит перечисленные службы (bits,spooler) со статусом ”Running”:

get-service bits,spooler | where <$_.status -eq 'running'>| stop-service –passthru

Командлет Start-Service запускает остановленные службы:

Start-Service -Name spooler -PassThru

Служба не запустится, если есть остановленные зависимые службы. Чтобы их найти и включить:

get-service samss | Foreach

Командлет Suspend-Service может приостанавливать службы, допускающие временную приостановку и возобновление. Для получения сведений о возможности временной приостановки конкретной службы используйте командлет Get-Service со свойством «CanPauseAndContinue«.

Get-Service samss | Format-List name, canpauseandcontinue

Чтобы отобразить список всех служб, работа которых может быть приостановлена, введите команду:

Приостановим службу SQLBrowser:

Suspend-Service -Name SQLBrowser

Для возобновления работы приостановленной службы служит командлет Resume-service:

Resume-Service -Name SQLBrowser

Следующая команда возобновляет работу всех приостановленных служб:

get-service | where-object <$_.Status -eq "Paused">| resume-service

Командлет Restart-Service перезапускает службу:

Restart-Service -Name spooler

Эта команда запускает все остановленные сетевые службы компьютера:

get-service net* | where-object <$_.Status -eq "Stopped">| restart-service

Параметр —ComputerName у этих командлетов отсутствует, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command или через пайп:

Например, чтобы перезапустите очередь печати на удаленном компьютере RM1, выполните команду:
Get-Service Spooler -ComputerName RM1 | Start-Service

Set-Service – изменение настроек службы Windows

Командлет Set-Service позволяет изменить параметры или настройки служб на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы. Командлет Set-Service имеет параметр -StartupType, позволяющий изменять тип запуска службы.

Изменим тип запуска службы spooler на автоматический:

Set-Service spooler –startuptype automatic –passthru

Можно перевести службу на ручной (manual) запуск:

Set-Service spooler –startuptype manual –passthru

Создание и удаление служб Windows c помощью PowerShell

New-Service – командлет для создания новой службы в Windows. Для новой службы требуется указать имя и исполняемый файл (вы можете запустить PowerShell скрипт как службу Windows).

В примере создадим новую службу с именем TestService.

new-service -name TestService -binaryPathName «C:\WINDOWS\System32\svchost.exe -k netsvcs»

С помощью параметра Get-WmiObject получим информацию о режиме запуска и описание службы

get-wmiobject win32_service -filter «name=’testservice'»

Изменить параметры новой службы можно командой

Set-Service -Name TestService -Description ‘My Service’ -StartupType Manual

Чтобы удалить службу используйте команду

(Get-WmiObject win32_service -Filter ″name=′TestService′″).delete()

Изменение учетной записи для запуска службы

Вы можете изменить учетную запись, из-под которой запускается служба. Получим имя учетной записи, которая используется для запуска службы TestService

get-wmiobject win32_service -filter «name=’TestService'» | Select name,startname

Для изменения имени и пароля учетной записи выполняем команды.

$svc = get-wmiobject win32_service -filter «name=’TestService'»
$svc.GetMethodParameters(«change»)

В результате получаем список параметров метода Change(). Считаем на каком месте находятся параметры StartName и StartPassword – 20 и 21 место соответственно.

Читайте также:  Linux join multicast group

$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,»Administrator»,»P@ssw0rd»)

Либо вы можете указать имя gMSA аккаунта. Пароль при этом не указывается.

Как видите, PowerShell позволяет легко управлять службами Windows. Можно создавать, останавливать, запускать и возобновлять службы, менять их свойства. Большинство командлетов позволяют управлять службами на удаленных компьютерах.

Get-Service

Gets the services on the computer.

Syntax

Description

The Get-Service cmdlet gets objects that represent the services on a computer, including running and stopped services. By default, when Get-Service is run without parameters, all the local computer’s services are returned.

You can direct this cmdlet to get only particular services by specifying the service name or the display name of the services, or you can pipe service objects to this cmdlet.

Examples

Example 1: Get all services on the computer

This example gets all of the services on the computer. It behaves as though you typed Get-Service * . The default display shows the status, service name, and display name of each service.

Example 2: Get services that begin with a search string

This example retrieves services with service names that begin with WMI (Windows Management Instrumentation).

Example 3: Display services that include a search string

This example displays services with a display name that includes the word network. Searching the display name finds network-related services even when the service name doesn’t include Net, such as xmlprov, the Network Provisioning Service.

Example 4: Get services that begin with a search string and an exclusion

This example only gets the services with service names that begin with win, except for the WinRM service.

Example 5: Display services that are currently active

This example displays only the services with a status of Running.

Get-Service gets all the services on the computer and sends the objects down the pipeline. The Where-Object cmdlet, selects only the services with a Status property that equals Running.

Status is only one property of service objects. To see all of the properties, type Get-Service | Get-Member .

Example 6: List the services on the computer that have dependent services

This example gets services that have dependent services.

The Get-Service cmdlet gets all the services on the computer and sends the objects down the pipeline. The Where-Object cmdlet selects the services whose DependentServices property isn’t null.

The results are sent down the pipeline to the Format-List cmdlet. The Property parameter displays the name of the service, the name of the dependent services, and a calculated property that displays the number of dependent services for each service.

Example 7: Sort services by property value

This example shows that when you sort services in ascending order by the value of their Status property, stopped services appear before running services. The reason is because the value of Status is an enumeration, in which Stopped has a value of 1, and Running has a value of 4. For more information, see ServiceControllerStatus.

To list running services first, use the Descending parameter of the Sort-Object cmdlet.

Example 8: Get the dependent services of a service

This example gets the services that the WinRM service requires. The value of the service’s ServicesDependedOn property is returned.

Читайте также:  Windows 10 отключение автозапуска флешки windows

Example 9: Get a service through the pipeline operator

This example gets the WinRM service on the local computer. The service name string, enclosed in quotation marks, is sent down the pipeline to Get-Service .

Parameters

Indicates that this cmdlet gets only the services that depend upon the specified service.

Type: SwitchParameter
Aliases: DS
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

Specifies, as a string array, the display names of services to be retrieved. Wildcards are permitted.

Type: String [ ]
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: True

Specifies, as a string array, a service or services that this cmdlet excludes from the operation. The value of this parameter qualifies the Name parameter. Enter a name element or pattern, such as s* . Wildcards are permitted.

Type: String [ ]
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: True

Specifies, as a string array, a service or services that this cmdlet includes in the operation. The value of this parameter qualifies the Name parameter. Enter a name element or pattern, such as s* . Wildcards are permitted.

Type: String [ ]
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: True

Specifies ServiceController objects representing the services to be retrieved. Enter a variable that contains the objects, or type a command or expression that gets the objects. You can pipe a service object to this cmdlet.

Type: ServiceController [ ]
Position: Named
Default value: None
Accept pipeline input: True
Accept wildcard characters: False

Specifies the service names of services to be retrieved. Wildcards are permitted.

Type: String [ ]
Aliases: ServiceName
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: True

Indicates that this cmdlet gets only the services that this service requires. This parameter gets the value of the ServicesDependedOn property of the service.

Type: SwitchParameter
Aliases: SDO, ServicesDependedOn
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: True

Inputs

System.ServiceProcess.ServiceController, System.String

You can pipe a service object or a service name to this cmdlet.

Outputs

This cmdlet returns objects that represent the services on the computer.

Notes

This cmdlet is only available on Windows platforms.

Beginning in PowerShell 6.0, the following properties are added to the ServiceController objects: UserName, Description, DelayedAutoStart, BinaryPathName, and StartupType .

You can also refer to Get-Service by its built-in alias, gsv . For more information, see about_Aliases.

This cmdlet can display services only when the current user has permission to see them. If this cmdlet does not display services, you might not have permission to see them.

To find the service name and display name of each service on your system, type Get-Service . The service names appear in the Name column, and the display names appear in the DisplayName column.

When you sort in ascending order by the Status property’s value, Stopped services appear before Running services. The service’s Status property is an enumerated value and the status names represent integer values. The sort order is based on the integer value, not the name. Stopped appears before because Running because Stopped has a value of 1, and Running has a value of 4. For more information, see ServiceControllerStatus.

Оцените статью