Как посмотреть службы windows 2008

Обновлено: 03.07.2024

Давайте начнем с того, что просто получим статус всех служб, запущенных на локальном компьютере. Используем для этого командлет Get-Service.

PowerShell, как правило, не чувствителен к регистру. Вывод приведен на скриншоте ниже.


Каждая строка представляет собой объект службы (service object).Каждый сервисный объект, как правило, имеет свои свойства. Вы можете открыть их, просто передав эти объекты в другую команду, Get-Member.

Результаты приведены на скриншоте ниже.


Параметр Typename сверху говорит о том, что за объект перед нами; в данном случае это System.ServiceProcess.ServiceController. На скриншоте также обведены свойства объекта. Это атрибуты, которые описывают этот тип объекта. Хотя большинство из них не используются при отображении по умолчанию, вы можете использовать их, если вы их знаете.
Например, нам интересно посмотреть информацию только о Windows Update. Через Get-Service получим информацию только о некоторых ее свойствах.

Как я узнал, что могу напечатать имя службы? Посмотрел с помощью Get-Service.
PS C:\> help get-service


Вы можете получить полную справочную информацию, напечатав:

Информацию о службе можно получить по ее имени или даже начальным буквам имени.

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

Я должен использовать имя параметра, чтобы PowerShell воспринимал значения в качестве отображаемого имени, а не фактического имени службы. Команда будет выглядеть так:

Параметр –Name можно не печатать.

ПОЛУЧАЕМ СТАТУС СЛУЖБЫ НА УДАЛЕННЫХ КОМПЬЮТЕРАХ

До этого нас интересовало получение информации о статусе служб на локальном компьютере. Однако управление службами осуществляется на удаленных компьютерах. Если посмотреть справку по Get-Service, то можно увидеть наличие у этого командлета параметра –Computername. В данном случае подключение к удаленным компьютерам осуществляется без включения функции удаленного управления PowerShell. Если вы можете управлять службами, используя инструменты командной строки (sc.exe или консоль управления Service Manager), вы можете использовать PowerShell. Давайте взглянем на пример:

Любая команда, которую я демонстрировал, можно использовать для передачи удаленному компьютеру. Даже нескольким компьютерам, если у вас есть соответствующие права на удаленном компьютере. Если вы используете PowerShell v3, то можно легко выбрать одну службу на множестве компьютеров.

Для наглядности представления отформатируем вывод.

Тот же самый результат, но в PowerShell v2.

ОСУЩЕСТВЛЯЕМ ФИЛЬТРАЦИЮ (ИСПОЛЬЗУЯ WHERE-OBJECT)

Фильтрация служб осуществляется с помощью командлета Where-Object (where – сокращение для командлета). Все, что нам нужно от PowerShell в этом случае, так это получить только те службы, у которых статус равен “stopped”.

PowerShell получает информацию обо всех службах и передает их (с помощью “|”) в следующую команду, которая осуществляет просмотр каждого объекта. Если свойство статуса объекта равно “stopped”, она остается в конвейере (pipeline), в противном случае она из него исключается. В конце выражение PowerShell отображает те объекты, которые остались в конвейере.
Результаты приведены ниже.


Теперь давайте попробуем найти одну службу на нескольких машинах. Вывод отформатируем в таблицу.

Мы даже можем комбинировать запрос отдельных служб с их фильтрацией.

Эта команда находит все службы на компьютере CHI-DC03, которые начинаются с ‘WIN’, но отображает только те, которые запущены.
Также можно сгруппировать объекты по свойству статуса (status property).

Переменная $dc03 является объектом GroupInfo.

Свойство Group представляет собой коллекцию связанных служб.

Написанное выше проще понять, если взглянуть на скриншот.


Что касается меня, то я бы предпочел использовать хеш-таблицу.

Теперь каждое имя представляет собой свойство в хеш-таблице. Если у вас имеется опыт работы с PoweShell, вы, возможно, подумываете сделать сделующее:

В чем суть параметра –AsString, на мой взгляд, достаточно очевидно. Теперь работать с хеш-таблицей стало проще.

Следующей задачей на повестке дня является проверка зависимостей сервера (server dependencies).

Требуемые службы

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

Параметр –RequiredServices передаст объект в конвейер для каждой требуемой службы. Вы можете даже пойти дальше и проверить требуемые службы для работы данной службы.

Параметр –Computername командлета Get-Service возьмет вывод, но только для тех объектов, у которых есть объект свойство Computername – именно поэтому я использую хеш-таблицу с Select-Object. Как мы видим проблем со службой DNS на компьютере CHI-DC03 нет.

ЗАВИСИМЫЕ СЛУЖБЫ

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

Требуемые и зависимые службы также являются частью каждого объекта службы.

А пока Вы можете получить все зависимости для всех служб, следующая команда

Это не даст вам особо полезную информацию, поэтому я рекомендую осуществлять запрос по конкретным службам. Команда работает гораздо лучше PowerShell v3.

Результаты видны на скриншоте ниже.


Чтобы получить подобные результаты в PowerShell v2, вам придется передать имена компьютеров (computernames) в Get-Service.


В следующей статье будет рассмотрен запуск, остановка и перезапуск служб.
Конец перевода.

date

27.07.2020

directory

PowerShell, Windows 10, Windows Server 2016

comments

комментария 4

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

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

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

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

управление службами windows из powershell

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

Get-Help Start-Service

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

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

Get-Service просмотр состояния служб

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

Get-Service поиск по имени службы

.

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

Get-Service spooler –ComputerName RM1,RM2

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

Get-Service spooler | Select-Object *

вывести все свойства службы windows

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

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

Get-Service - можно ли перезапускать, приостаналивать службу windows

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

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

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

Get-Service –Name Spooler -RequiredServices

Get-Service RequiredServices зависимости служб в windows

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

Get-Service –Name Spooler -DependentServices

Get-Service DependentServices

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

Get-Service | Where-Object status -eq

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

Get-Service | Where-Object <<img class=

.starttype -eq " width="" />
.starttype -eq " width="" />

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

if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
Write-host "ServiceTest exists"
>

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

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

Stop-Service -Name spooler

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

Командлет Stop-Service - остановит службу

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

Stop-Service - ошибка Cannot stop service because it has dependent services. It can only be stopped if force flag set

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

Stop-Service samss –Force -Passthru

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

get-service bits,spooler | where | stop-service –passthru

остановить несколько служб из powershell

Иногда службы зависают в статусе Stopping и их процессы приходится завершать принудительно.

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

Start-Service -Name spooler -PassThru

Start-Service -запуск службы

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

get-service samss | Foreach

Start-Service запустить службу и все зависимые службы

Get-Service samss | Format-List name, canpauseandcontinue

Get-Service canpauseandcontinue

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

список служб, разрешающих приостановку

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

Suspend-Service -Name SQLBrowser

Suspend-Service

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

Resume-Service -Name SQLBrowser

Resume-Service

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

get-service | where-object | resume-service

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

Restart-Service -Name spooler

Restart-Service - перезапуск службы windows

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

get-service net* | where-object | restart-service

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

По умолчанию только администраторы могут запускать/останавливать службы в Windows, но вы можете предоставить права на перезапуск конкретной службы и обычным пользователям.

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

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

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

Set-Service spooler –startuptype automatic –passthru

Set-Service включить автозапуск для службы

Можно перевести службу на ручной (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"

New-Service создать новую службу в windows

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

get-wmiobject win32_service -filter "name='testservice'"

get-wmiobject win32_service -filter "name=

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

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

Set-Service - изменить тип запуска службы

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

(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 место соответственно.

svc.GetMethodParameters

$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 аккаунта. Пароль при этом не указывается.

Invoke-WmiMethod - запуск службы из под другого пользователя

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

порт 22 в частности. Я установил freeSSHd на Windows Server 2008 коробка, которая работает только IIS. Когда я пытаюсь запустить службу SSH, он говорит мне, что порт уже используется. Как узнать, какая служба использует этот порт?

Sysinternals TCPView покажет вам TCP / UDP порты, которые используются и процессы, которые их используют.

alt text

netstat -b в командной строке также будет работать. Sysinternals TCPView в основном красивее GUI версия, netstat - это инструмент, который поставляется с Windows.

netstat -an покажет все порты, которые сейчас с их адреса в числовой форме.
Для поиска информации о конкретном порте используйте netstat -an | grep PORTNO .

netstat в Windows 2008:

Запустите командную строку с "Запуск от имени администратора", затем введите netstat -anb .

команда работает быстрее в числовой форме ( -n ), и -b опция требует высоты.

для фильтрации выходных данных и проверки только udp-портов: используйте netstat -anb -p udp

принять его на следующий уровень с CurrPorts от NirSoft:

CurrPorts отображает список всех открытые порты TCP / IP и UDP на локальном компьютере. Для каждого порта в списке, информация о процесс, который открыл порт, также отображается, включая имя процесса, полный путь процесса, версия информация о процессе (продукте название, описание файла, и так далее), время, когда процесс был создан, и пользователь, который его создал.

не только это, но:

кроме того, CurrPorts позволяет закрыть нежелательные TCP соединения, убить процесс, который открыл порты, и сохраните информацию о портах TCP / UDP в HTML-файл, XML-файл или текстовый файл с разделителями табуляции. Currports также также автоматически маркируйте с пинком цвет подозрительных TCP / UDP портов по неопознанным заявкам (Приложения без версии информация и иконки)

Иногда вам может потребоваться открыть и управлять вашими службами Windows. Вы можете остановить какую-либо службу, запустить ее, отключить службу, отложить ее запуск, возобновить или приостановить службу Windows. В это время вам поможет Services Manager , который является встроенным инструментом в операционной системе Windows. Этот пост покажет вам, как открыть ваши службы Windows, используя диспетчер служб, а также командную строку.

Как открыть диспетчер служб Windows

Чтобы открыть службы Windows, запустите services.msc , чтобы открыть диспетчер служб. Здесь вы сможете запускать, останавливать, отключать, задерживать службы Windows.

Давайте посмотрим, как это сделать, более подробно.

Щелкните правой кнопкой мыши по кнопке «Пуск», чтобы открыть меню WinX. Выберите Run. Это открывает окно Run. Теперь введите services.msc и нажмите Enter, чтобы открыть диспетчер служб.


Типы запуска служб Windows

Windows 10 предлагает четыре типа запуска:

  1. автоматическая
  2. Автоматический (отложенный запуск)
  3. Руководство
  4. Инвалид.

Запуск, остановка, отключение служб Windows

Чтобы запустить, остановить, приостановить, возобновить или перезапустить любую службу Windows, выберите службу и щелкните ее правой кнопкой мыши. Вам будут предложены эти варианты.

Если вы хотите управлять дополнительными опциями, дважды щелкните Сервис, чтобы открыть окно его свойств.


Здесь в раскрывающемся меню Тип запуска вы сможете выбрать тип запуска для Службы.

В разделе Статус службы вы увидите кнопки «Пуск», «Стоп», «Пауза», «Возобновить службу».

После внесения изменений вам нужно будет нажать «Применить» и перезагрузить компьютер, чтобы изменения вступили в силу.

Управление службами с помощью командной строки

Вы также можете использовать командную строку для запуска, остановки, приостановки, возобновления обслуживания. Чтобы использовать его, из меню WinX откройте командную строку (Admin) и выполните одну из следующих команд:

Чтобы запустить сервис:

Чтобы остановить службу:

Чтобы приостановить услугу:

Чтобы возобновить услугу:

Чтобы отключить службу:

Рекомендуется не изменять настройки по умолчанию, если вы не знаете, что делаете, поскольку это может привести к тому, что некоторые части вашей операционной системы перестанут работать. Когда вы останавливаете, запускаете или перезапускаете службу, это также влияет на все зависимые службы, поэтому вы должны быть осторожны.

Читайте также: