Как управлять службами в Windows –

Введение

Порою с помощью PowerShell управлять Windows Server 2008 можно гораздо быстрее, чем с помощью привычых GUI-инструментов. В этой статье вы найдет 9 наиболее распространенных задач, которые могут быть реализованы с помощью PowerShell. (10 задача была исключена из перевода из-за того, что демонстрируемый в статье скрипт был неполным – Прим. переводчика).

  1. Изменение пароля локального администратора с помощью PowerShell
  2. Перезагрузка или выключение сервера
  3. Перезапуск службы
  4. Остановка процесса
  5. Создание отчета об использовании диска
  6. Получаем 10 последних ошибок журнала событий
  7. Сбрасываем контроль доступа к папке
  8. Получаем server’s uptime
  9. Получаем информацию о Service Pack

Первые пять задач мы рассмотрим в этом посте, оставшиеся 4 последующем. Заинтересованных приглашаем под кат.

Что такое службы

Службы — это вид программ, которые работают в фоне и не требуют действий пользователя.


Службы могут как относиться к операционной системе Windows, так и быть сторонними приложениями. Примеры служб, которые может установить сам пользователь: веб-сервер, сервер удалённого рабочего стола VNC, SSH сервер, сервер СУБД MySQL.

Управлять службами можно:

  • в графическом интерфейсе
  • командной строке
  • в PowerShell

Создаем отчет об использовании дисков

Администраторы должны отслеживать свободное место, оставшееся на серверах. Это можно сделать, использовав WMI и класс Win32_LogicalDisk, которые дают нам информацию такую как ID устройства, размер диска, свободное места и прочую информацию.Через WMI мы можем обращаться к локальным и удаленным компьютерам.

Мы также можем выполнять эти запросы как одной, так и нескольких машинах. Также мы можем: экспортировать данные в .csv или базу данных, создавать текстовый или HTML-отчет или просто вывести результаты на экран. Пример команды, выполняемой на локальном компьютере.

Get-WmiObject win32_logicaldisk -filter “drivetype=3” | Out-File c:ReportsDisks.txt

Мы используем командлет GetWmiObject для возвращения информации из класса Win32_LogicalDisk. Затем мы применяем -filter чтобы возвратить только информацию, для которой справедливо утверждение drivetype=3, которое означает фиксированные логические диски, типа C:.

Хотя вроде бы все нормально, лучше внести парочку улучшений. Например, добавить отображение свободного места в гигабайтах, а не байтах. Этим мы и займемся.Чтобы это сделать создадим функцию Get-DiskUtil. Хотя в предыдущем примере мы все делали интерактивно, в этом случае давайте запишем функцию в файл, загрузим в ваш профиль к другим скриптам, которые можно использовать позже.А вот и сама функция:

Давайте ее разберем.Функция берет имя компьютера как параметр и задает его как имя локального компьютера по умолчанию.

Затем мы используем фрагмент скрипта Process, где свойство “имя компьютера” передается в функцию. “$_” указывает, что имя компьютера задается как переменная. В противном случае имя компьютера как будет воспринято как параметр.

Далее следует выражение GetWmiObject.

Вывод этого выражения передается в командлет Select-Object (сокращенно Select). Мы используем хеш-таблицы, чтобы создать пользовательское свойство под названием Computername. Фактически будет осуществлено переименование SystemName текущего объекта ($_) в Computername. DeviceID остается неизменным.

Затем создаем свойство UsedGB, которого нет в WMI. Вычисляется разница между свойствами Size и FreeSpace и делится на 1GB.

В конце создаем еще одно свойство PerFree – свободно в процентах. Оно завершает функцию.

Ниже приведена работа функции для компьютера CHI-FP01, выведенная в таблице (Format-Table (или ft)) с авто форматированием (параметр –auto).

Все и так хорошо, но от этой функции мы можем получить больше. Поэтому предположим, что вам нужно еженедельно получать отчет об использовании дисков на всех серверах в вашей компании. Посмотрим, как этого можно достичь.Для начала сохраним результаты нашего выражения в переменную $data, чтобы каждый раз не набирать эту команду.

Данные будут храниться в переменной $data. Вы можете вытащить информацию из $data и отсортировать по computername, применив –auto. Информация также может быть направлена на печать (Out-Printer) или в файл (Out-File).

Конвертируем в csv:

Потом Вы можете импортировать этот csv файл для получения снимка статуса использования дисков на момент запуска команды:

Пример:

И напоследок: я покажу, как создать HTML отчет, доступ к которому можно получить из любого места. Берем $data и передаем ее в Sort Computername. Результат передается в командлет ConvertTo-HTML. Вы можете присвоить заголовок и путь CSS.

Теперь файл готов, его можно посмотреть с помощью команды start.

Пример HTML отчета.

Помните, что информацию необходимо держать информацию актуальной.

Upd:В посте приведен перевод статьи с портала petri.co.ilTop 10 Server 2008 Tasks done with PowerShell – Part 1

Вторую часть перевода смотрите здесь.

Get-content


Чтение содержимого файлов – наиболее частое требование для новичков, которые пытаются выучить PowerShell. Процедура чтения файлов с PowerShell упрощается. Даже неспециалист может читать содержимое файла, просто передав его в командлет Get-Content.

Пример.

Get-help

Самый первый и самый главный командлет PowerShell – вызов справки. С помощью командлета Get-Help можно проверить синтаксис, посмотреть примеры использования и детальное описание параметров любого PowerShell командлета. Этот командлет примечателен тем, что вы просто можете набрать Get-Help Services, чтобы получить список всех командлетов, которые подходят для работы со службами.

Пример:

PS C:> Get-Help Service

Как управлять службами в Windows -

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

PS C:> Get-Help -Name Get-Service

Вы получаете всю информацию о командлете Get-Service (будет рассмотрен ниже).

Как управлять службами в Windows -

Get-process

Этот командлет позволяет быть в курсе, какие процессы запущены на локальных или удаленных компьютерах. Показываются имя и ID процесса, а также путь к исполняемому файлу, имя компании, версия исполняемого файла и память, используемая процессом.


Примеры:

Получение информации о процессах, запущенных на локальном компьютере:

PS C:> Get-Process

Как управлять службами в Windows -

Введите следующий командлет для получения подробной информации о запущенных процессах

PS C:> Get-Process | Format-List * -Force

Получение информации о процессах, запущенных на удаленном компьютере:

PS C:> Get-Process -ComputerName MYPC1 | Format-List * -Force

MYPC1 необходимо заменить на имя того компьютера, с которого вы хотите получить информацию о запущенных процессах.

Get-service


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

Пример:

PS C:> Get-Service wwansvc, spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Stopped wwansvc WWAN AutoConfig
PS C:>
 

Как управлять службами в Windows -

Здесь мы запросили информацию о двух службах wwansvc и spooler

:/>  Не открывается «Пуск» Windows 10 – 3 способа решить проблему


Выводится таблица со статусом службы, ее именем и отображаемым именем.

Мы можем видеть что служба spooler запущена, а wwansvc остановлена

Start-service

Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.

Stop-process


Этот командлет остановливает процесс на локальном или удаленном компьютере. Он берет имя или ID процесса и завершает этот процесс. Это полезно в тех случаях, когда приложение не отвечает.

Пример:

Остановить процесс с ID 22608 на локальном компьютере:

PS C:> Stop-Process -Id 22608

Остановить все процессы Excel на локальном компьютере:

PS C:> Stop-Process -name excel

Совет: Хотя у командлета Stop-Process отсутствует параметр -ComputerName, Вы все равно можете использовать его для завершения удаленных процессов, используя предложенный ниже совет:

PS C:> $Obj = Get-Process -Name excel -ComputerName MYPC1
PS C:> Stop-Process -InputObject $Obj

Stop-service

Чтобы остановить службу, мы должны уточнить ее имя.

Запуск и остановка


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

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

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

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


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

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

В окне «Свойства» вы также увидите другие вкладки, такие как «Вход в систему», «Восстановление» и «Зависимости», которые предлагают дополнительные параметры и информацию.

После внесения изменений вам нужно будет нажать «Применить».

Используем cim

В PowerShell 3.0 вы можете использовать командлеты CIM, чтобы осуществлять те же самые запросы. Преимущества CIM связаны с удаленной работой с PowerShell.

PS C:> get-ciminstance win32_service -comp chi-dc01

Фильтры работают аналогичным образом.

PS C:> get-ciminstance win32_service -filter "startmode='auto' AND state<>'Running'" -comp chi-ex01 | Select Name,State,Systemname
Name State Systemname
---- ----- ----------
clr_optimization_v4.0.30319_32 Stopped CHI-EX01
clr_optimization_v4.0.30319_64 Stopped CHI-EX01
MSExchangeProtectedServiceHost Stopped CHI-EX01
MSExchangeRPC Stopped CHI-EX01
MSExchangeSA Stopped CHI-EX01
MSExchangeServiceHost Stopped CHI-EX01
ShellHWDetection Stopped CHI-EX01
sppsvc Stopped CHI-EX01

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

Как с помощью powershell завершать процессы в windows 10 | белые окошки

Завершить в принудительном режиме зависший или ненужный процесс в Windows можно несколькими способами — с помощью Диспетчера задач, командной строки, сторонних утилит вроде Process Explorer. Также это можно сделать с помощью оболочки PowerShell — более совершенного аналога командной строки CMD, которая в будущем должна будет заменить собою последнюю.

Для завершения процессов в PowerShell предусмотрен отдельный командлет Stop-Process, позволяющий «убивать» один или несколько процессов сразу. Способов завершения процесса в PowerShell два — через идентификатор процесса и через его имя, используйте какой вам удобнее. Относящийся к первому способу командлет имеет такой синтаксис:

Stop-Process id_process

Где id_process — идентификатор процесса.

Для получения списка ID активных процессов используется командлет Get-Process. Допустим, вы хотите завершить зависший браузер Edge. Выполните в PowerShell команду Get-Process и посмотрите, какой ID имеет процесс MicrosoftEdge.

Get-Process

В данном примере это 2196. Следовательно, команда завершения будет такой:

Stop-Process 2196

Выполните её и работа Edge будет немедленно завершена.

Stop-Process

Вместо идентификатора можно использовать имя процесса, только в этом случае потребуется указать ключ –processname. Вот так:

Stop-Process -processname MicrosoftEdge

Результат будет точно таким же.

Stop-Process -processname

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

Stop-Process -processname MicrosoftEdge, regedit

Вышеприведённая команда завершит работу сразу двух программ — браузера Edge и редактора реестра.

Завершить работу нескольких приложений

Тут, пожалуй, стоит сказать о некоторой особенности командлета Stop-Process. Если с его помощью вы попробуете завершить работу Проводника, то последний будет перезапущен, а не закрыт.

И последнее.

Завершать зависшие или неправильно работающие процессы лучше в PowerShell, запущенном от имени администратора, так как некоторые процессы требуют повышенных привилегий.

Меняем режим запуска

Вы также можете менять режим запуска службы. Опции таковы: Automatic, Disabled или Manual. С помощью WMI невозможно установить значения запуска службы Automatic (Delayed).

PS C:> get-wmiobject win32_service -filter "name='spooler'" | Invoke-WmiMethod -Name 
ChangeStartMode -ArgumentList "Manual" | Select ReturnValue

ReturnValue
-----------
          0

Параметр ArgumentList показывает какое значение следует использовать. Запуск команды осуществляется с правами администратора.

Настройка служб в графическом интерфейсе

Чтобы открыть менеджер служб, введите в поиск «Службы» и нажмите Enter:

Ещё один способ открыть это окно, нажать Win r и ввести:

services.msc

Здесь, в столбце «Имя», вы увидите список служб, работающих в вашей системе, вместе с их Описанием. Вы также сможете увидеть их Статус — независимо от того, запущены они или остановлены, а также Типы запуска и Вход от имени.

Отключаем ненужные службы с помощью powershell

Кроме командной строки для отключения ненужных сервисов можно еще использовать PowerShell. Открыть PowerShell в Windows 10 можно через панель управления или через поиск.

Теперь введем команду stop-service remoteregistry в PowerShell и выполним ее.

Эта команда остановит знакомый нам сервис «Удаленный реестр». Чтобы заново запустить «Удаленный реестр» в PowerShell, необходимо выполнить команду: start-service remoteregistry

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

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

Каждую из служб, которые перечислены в первом примере, можно достаточно легко и быстро отключить через консоль. Для отключения нам нужна консоль, запущенная в режиме Администратора. В Windows 10 запустить консоль в режиме Администратора можно различными способами. Наиболее удобным способом является клик по меню «Пуск» правой кнопкой мыши и выбор необходимого нам пункта.

В запущенной консоли попробуем остановить уже знакомый нам сервис «Удаленный реестр». Для этого в консоли наберем команду net stop “RemoteRegistry” и выполним ее.

:/>  Свойства папки в windows 10 где находится

Если вам заново будет нужно запустить «Удаленный реестр», то это можно сделать командой net start “RemoteRegistry”

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

Рассмотренный пример лучше всего подойдет системным администраторам и опытным пользователям. Также хочется отметить, что рассмотренный пример без проблем можно использовать на предыдущих операционных системах Windows 7 и 8.

Отключаем ненужные службы с помощью надстройки «службы»

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

Открыв надстройку, вы увидите весь список сервисов, установленных на компьютере.

Для примера попробуем отключить сервис «Удаленный реестр» через открывшуюся надстройку. Для этого перейдем к искомому сервису и откроем его.

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

После этих действий «Удаленный реестр» полностью отключится. «Удаленный реестр» предназначен для редактирования файлов реестра удаленным пользователем. Например, Администратор правит ветки реестра на удаленном компьютере в сети. Для домашнего пользователя ПК «Удаленный реестр» абсолютно бесполезен, поэтому можете его смело выключать.

Из примера видно, как просто отключать ненужные сервисы. На вопрос, какие сервисы можно отключить в десятке, мы подготовили список с описанием сервисов, которые можно безболезненно отключить:

  • Биометрическая служба Windows — используется для обработки и хранения биометрических данных;
  • Браузер компьютеров — используется для создания списка компьютеров в сети;
  • Вторичный вход в систему — позволяет управлять компьютером другим пользователям;
  • Диспетчер печати — обеспечивает работу печатных устройств;
  • Изоляция ключей CNG — производит изоляцию для процесса ключа;
  • Ловушка SNMP — обеспечивает перехват сообщений для локальных агентов SNMP;
  • Рабочая станция — доступ к рабочим станциям по протоколу SMB;
  • Рабочие папки — используется для синхронизации директорий на различных устройствах;
  • Сетевая служба Xbox Live — обеспечивает доступ к сервисам Xbox Live;
  • Все сервисы, связанные аппаратной визуализацией Hyper-V — сервисы, которые предназначены для работы виртуальных машин;
  • Служба географического положения — используется для отслеживания координат компьютера;
  • Служба данных датчиков — обрабатывает и хранит информацию, получаемую с датчиков, установленных на ПК;
  • Служба датчиков — управляет датчиками на ПК;
  • Служба лицензий клиента — обеспечивает правильную работу магазина Windows 10;
  • Служба маршрутизатора SMS Microsoft Windows — осуществляет пересылку сообщений по заранее созданным правилам;
  • Удаленный реестр — создана для редактирования реестра удаленным пользователем;
  • Факс — обеспечивает работу устройств, которые могут принимать и отправлять факсимильные сообщения.

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

Также хочется отметить, что перед отключением этих сервисов внимательно почитайте их назначение в описании. Например, если вы отключите «Диспетчер печати» и «Служба поддержки Bluetooth», то вы не сможете подключить принтер и не сможете пользоваться устройствами Bluetooth.

Получаем учетную запись, под которой запущена служба

Также с помощью WMI вы можете получить учетную запись, под которой запущена служба. В WMI таковым является свойство Startname.

PS C:> get-wmiobject win32_service -comp chi-ex01 | group startname
Count Name Group
----- ---- -----
95 localSystem {\CHI-EX01rootcimv2:Win32_Service.Name="AeLook...
36 NT AUTHORITYLocalService {\CHI-EX01rootcimv2:Win32_Service.Name="ALG", ...
24 NT AUTHORITYNetworkSe... {\CHI-EX01rootcimv2:Win32_Service.Name="aspnet...

И конечно, вы можете осуществить фильтрацию по этому свойству.

Это очень удобно, если вы ищете службы, запущенные под определенной учетной записью, например, доменного администратора.

Приостановка и возобновление работы

Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)

В чем же проблема? Смотрим на объект (используя Get-Service).

PS C:> get-service bits | select *
Name : bits
RequiredServices : {RpcSs, EventSystem}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
DisplayName : Background Intelligent Transfer Service
DependentServices : {}
MachineName : .
ServiceName : bits
ServicesDependedOn : {RpcSs, EventSystem}
ServiceHandle : SafeServiceHandle
Status : Running
ServiceType : Win32ShareProcess
Site :
Container :

Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:

PS C:> get-service | where {$_.CanPauseandContinue}
Status Name DisplayName
------ ---- -----------
Running LanmanServer Server
Running LanmanWorkstation Workstation
Running MSSQLSERVER SQL Server (MSSQLSERVER)
Running O2FLASH O2FLASH
Running stisvc Windows Image Acquisition (WIA)
Running Winmgmt Windows Management Instrumentation

Как мы видим, не так много служб удовлетворяют этому требованию.

PS C:> suspend-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Paused O2FLASH o2flash

Готовы возобновить работу службы? Используйте следующее выражение:

PS C:> resume-service o2flash -PassThru
Status Name DisplayName
------ ---- -----------
Running O2FLASH o2flash

Оба командлета также поддерживают –Whatif.

Рекомендации

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

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

Например, если вы остановите Windows Audio, то вы отключите работу всех аудиоустройств и звуковых программ. Чтобы вернуть работоспособность аудиоустройств и звуковых программ, нужно заново запустить неиспользуемую Windows Audio. Из этого примера можно отметить, что необходимо запоминать отключаемые сервисы, чтобы восстановить нормальную работу Windows 10.

Надеемся, наш материал поможет вам отключить ненужные службы, и вы сможете увеличить быстродействие Windows 10.

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

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

  • Автоматически
  • Автоматически (отложенный запуск)
  • Вручную
  • Вручную (запуск по триггеру)
  • Отключена

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

Рекомендуется также ознакомиться со статьёй «Настройка рабочего окружения PowerShell в Windows и Linux».


PowerShell — это среда автоматизации задач и управления конфигурацией от Microsoft. В этом разделе мы познакомим вас с тем, как управлять службами Windows через PowerShell, поскольку это намного быстрее и эффективнее, чем другие методы.

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

Вот подробное руководство по использованию PowerShell для управления службами Windows.

:/>  Как узнать номер модели компьютера на Windows 10 » MSReview


Запустите терминал PowerShell с правами администратора. Для этого нажмите Win x и выберите Windows PowerShell (администратор):

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

Get-Service

Это образец вывода, который вы получите.

В выводе по умолчанию вы увидите 3 основных раздела: Status (Статус), Name (Имя) и DisplayName (Отображаемое имя). Теперь, если вы хотите найти и перечислить конкретный сервис, вы можете отфильтровать любой из параметров.


Примеры.

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

Get-Service -Name wi*

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

Get-Service -DisplayName win*


Примечание: если вы хотите получить доступ к другому компьютеру через сеть, вы можете просмотреть список служб для этой системы с помощью этой команды:

Get-Service -ComputerName СЕРВЕР1

Важной частью управления услугами является управление зависимыми службами.

Чтобы получить доступ к списку DependentServices для конкретной службы, мы можем использовать следующую команду:

Get-Service -Name ИМЯ_СЛУЖБЫ -DependentServices


Например:

Get-Service -Name WSearch -DependentServices

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

Get-Service -Name ИМЯ_СЛУЖБЫ -RequiredServices

Например:

Get-Service -Name WSearch -RequiredServices

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


Для остановки службы с помощью PowerShell вы можете использовать следующую команду:

Stop-Service -Name ИМЯ_СЛУЖБЫ

Например:

Stop-Service -Name Apache2.4

Последующие примеры будут показываться на службе Apache2.4. То есть в следующих командах замените «Apache2.4» на имя интересующей вас службы.

Для запуска службы в PowerShell вы можете использовать эту команду:

Start-Service -Name Apache2.4


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

Restart-Service -Name Apache2.4

И наконец, следующая команда используется для временного приостановления службы.

Suspend-Service -Name Apache2.4

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

Set-Service -Name ИМЯ_СЛУЖБЫ -StartupType ТИП_ЗАПУСКА

В качестве ТИП_ЗАПУСКА могут быть:

  • Automatic — служба будет запущена или была запущена операционной системой при запуске системы. Если автоматически запускаемая служба зависит от запускаемой вручную службы, запускаемая вручную служба также запускается автоматически при запуске системы.
  • AutomaticDelayedStart — запускается вскоре после загрузки системы.
  • Disabled — служба отключена и не может быть запущена пользователем или приложением.
  • InvalidValue – не имеет никакого эффекта. Командлет не возвращает ошибку, но StartupType службы не изменяется.
  • Manual – служба запускается только вручную, пользователем, с помощью диспетчера управления службами или приложением.


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

Например:

Get-Help *-Service
Get-Help New-Service

Связанные статьи:

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

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

Чтобы запустить службу:

net start СЛУЖБА


Например, для запуска службы mysql:

net start mysql

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

net stop СЛУЖБА

Например, для остановки службы mysql:

net stop mysql


Чтобы приостановить службу (не все службы возможно поставить на паузу!):

net pause СЛУЖБА

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

net continue СЛУЖБА

Для отключения автозапуска службы:

sc config "ИМЯ_СЛУЖБЫ" start=disabled

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

sc config "mysql" start=disabled


Для включения автозапуска службы:

sc config "ИМЯ_СЛУЖБЫ" start=auto

Например, для включения автозапуска службы mysql:

sc config "mysql" start=auto

Перечисление состояний активных служб и драйверов

sc query


Перечисление только служб Win32

sc query type=service

Для просмотра состояния определённой службы:

sc query ИМЯ_СЛУЖБЫ

Например, чтобы увидеть состояние службы Apache2.4:

sc query Apache2.4

Устанавливаем свойства службы

У объекта службы не так много свойств, которые вы можете менять. Некоторые WMI объекты могут быть изменены с помощью Set-WmiInstance. Но в случае с объектами служб, для объекта вам необходимо использовать метод Change(). Единственная проблема заключается в том, что у этого метода много параметров.

Change(string DisplayName,string PathName,uint32 ServiceType,uint32 ErrorControl,string StartMode,boolean DesktopInteract,string StartName,string StartPassword,string LoadOrderGroup,string LoadOrderGroupDependencies,string ServiceDependencies)

Вы должны включить эти параметры в метод до того, который вы хотите использовать последним. Используйте значение $Null для тех параметров, которые вы хотите пропустить. Например: скажем, я хочу изменить свойство ErrorControl службы Spooler с Normal на Ignore.

PS C:> Get-WmiObject win32_service -filter "Name='Spooler'" | Invoke-WmiMethod 
-Name Change -ArgumentList @($null,$null,$null,0) | Select ReturnValue

ReturnValue
-----------
          0

Выглядит так, будто все работает, проверим.

PS C:> get-wmiobject win32_service -filter "Name='spooler'" | select 
name,errorcontrol

name                                                        errorcontrol    
----                                                        ------------    
Spooler                                                     Normal

Ан нет! Так вышло, что у PowerShell есть небольшая “причуда”, о которой вы должны знать. Даже хотя WMI метод ожидает параметров в заданном порядке, ErrorControl должен быть на четвертом месте, когда используете Invoke-WmiMethod, порядок по алфавиту. И не спрашивайте почему. Вот что я делаю, чтобы определить “правильный” порядок.

PS C:> $svc = Get-WmiObject win32_service -filter "name='spooler'"

__GENUS                    : 2
__CLASS                    : __PARAMETERS
__SUPERCLASS               : 
__DYNASTY                  : __PARAMETERS
__RELPATH                  : 
__PROPERTY_COUNT           : 11
__DERIVATION               : {}
__SERVER                   : 
__NAMESPACE                : 
__PATH                     : 
DesktopInteract            : 
DisplayName                : 
ErrorControl               : 
LoadOrderGroup             : 
LoadOrderGroupDependencies : 
PathName                   : 
ServiceDependencies        : 
ServiceType                : 
StartMode                  : 
StartName                  : 
StartPassword              : 
PSComputerName             :

В этом списке ErrorControl находится на 3 месте, так что я могу заново запустить изменённое выражение Invoke-WmiMethod.

PS C:> Get-WmiObject win32_service -filter "Name='Spooler'" | Invoke-WmiMethod -Name Change -ArgumentList @($null,$null,0)

Проверим еще раз и получим желаемый результат.

PS C:> get-wmiobject win32_service -filter "Name='spooler'" | select 
name,errorcontrol

name                                                        errorcontrol    
----                                                        ------------    
Spooler                                                     Ignore

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

Оставьте комментарий

Adblock
detector