как удаленно остановить службу windows

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

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

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

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

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows.

Командлет 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*

как удаленно остановить службу windows

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

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

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

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

get-service samss | Foreach

как удаленно остановить службу windows

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

Get-Service samss | Format-List name, canpauseandcontinue

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

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

как удаленно остановить службу windows

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

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

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

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

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

Set-Service spooler –startuptype automatic –passthru

как удаленно остановить службу windows

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

Set-Service spooler –startuptype manual –passthru

как удаленно остановить службу windows

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

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

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

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

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

как удаленно остановить службу windows

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

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

как удаленно остановить службу windows

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

как удаленно остановить службу windows

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

Источник

Управляем службами Windows с помощью PowerShell. Часть 2

Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.

как удаленно остановить службу windows

Взглянем на эти команды внимательнее.

STOP-SERVICE

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

Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.

Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).

Параметр –WhatIf был добавлен для того, чтобы мы посмотрели, что будет, если командлет будет запущен. Когда я удостоверюсь, что это именно та служба, которая меня интересует, я просто удалю -Whatif и остановлю службу.

Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:

Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.

Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.

как удаленно остановить службу windows

В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.

START-SERVICE

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

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

как удаленно остановить службу windows

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

Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.

RESTART-SERVICE

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

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

ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ

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

как удаленно остановить службу windows

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

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

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

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

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

УДАЛЕННЫЕ СЛУЖБЫ

Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.

как удаленно остановить службу windows

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

УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС

Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.

Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.

Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.

как удаленно остановить службу windows

К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:

Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.

УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ

Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).

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

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

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

Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.

Источник

Запуск и остановка службы Windows удаленно с помощью PSEXEC

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

пожалуйста, может любой орган помочь мне в этом Заранее спасибо

4 ответов

Я не могу проверить это прямо сейчас, но это должно быть:

PSService на SysInternals специально для служб удаленного управления::’

запрос отображает состояние сервиса.

config отображает конфигурацию службы.

методу setconfig задает тип запуска (отключено, авто, требование) службы.

старт запуск службы.

остановка останавливает службу.

перезагрузка остановка и перезапуск сервиса.

пауза приостанавливает службу

прод возобновляет приостановленную службу.

depend перечисляет службы, зависящие от указанного.

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

найти Выполняет поиск указанной службы в сети.

\\компьютер предназначен для указанной системы NT / Win2K.

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

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

нет информации «вход», поэтому, возможно, вам нужно выполнить

перед выполнением команды sc.

одно преимущество перед psexec заключается в том, что на удаленной машине не отображается окно консоли.

использование PSEXEC

ниже пакетный файл позволит вам остановить и запустить службы на нескольких удаленных машинах. Создание Компьютеров.txt-файл в том же каталоге, из которого запускается пакетный файл, и список имен хостов ПК по одному в строке.

Источник

Как управлять службами Windows с помощью PowerShell

Службы Windows — одна из тех тем, с которыми приходится работать почти каждому системному администратору Windows. Для управления службами Windows вы можете запустить оснастку MMC services.msc, но это удобно для разовых задач, что же делать, если вам нужно настроить какую-либо автоматизацию с помощью PowerShell?

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

Пришло время узнать, как управлять службами с помощью PowerShell.

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

Содержание

Эта статья — пошаговое руководством по практическому изучению того, как с помощью PowerShell можно просматривать службы Windows и управлять ими. Если вы хотите попрактиковаться с во время чтения статьи убедитесь в том что вы соблюли минимальные для этого требования:

Использование PowerShell для вывода списка служб с Get-Service

Одна из самых простых задач, которую вы можете выполнить с помощью служб PowerShell и Windows, — это просто перечислить, какие службы существуют на локальном компьютере. Например, откройте PowerShell, запустите Get-Serviceи просмотрите результат.

Обратите внимание, что на приведенном ниже скриншоте, в результате вывода командлета Get-Service будут перечислены все службы на локальном компьютере, а также Status, Name и DisplayName каждой службы.

как удаленно остановить службу windows

Как и многие другие командлеты, PowerShell не возвращает все свойства для каждой службы. Если, например, вы хотите увидеть требуемые службы или, возможно, описание службы, вы можете просмотреть эти свойства, направив выходные данные в Select-Object используя * для представления всех свойств, как показано на следующем скриншоте.

как удаленно остановить службу windows

Результат такого запроса будет выглядеть таким образом:

как удаленно остановить службу windows

Просмотр служб на удаленных ПК

Возможно, вы находитесь в сети и вам нужно перечислить службы на одном или нескольких удаленных компьютерах с Windows.
Доступ к службам на удаленных ПК возможен двумя разными способами: удаленное взаимодействие PowerShell и CIM / WMI.

Get-Service и удаленное взаимодействие PowerShell

Один из способов удаленного доступа к службам Windows — использование удаленного взаимодействия PowerShell (PS Remoting). Используя PS Remoting, вы можете инкапсулировать любую локальную команду и вызывать ее в удаленном сеансе так же, как вы делали это локально.

Предполагая, что на удаленном компьютере включено удаленное взаимодействие PowerShell

На выходе мы получим список всех служб на ПК computer1

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

Просмотр служб с помощью CIM / WMI

В некоторых ситуациях использование PowerShell Get-Serviceможет не подойти. Вместо этого вы можете запросить CIM / WMI через сеанс CIM. При использовании сеанса CIM использовать удаленное взаимодействие PowerShell необязательно.

Чтобы найти службы управления через CIM, необходимо:

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

Запуск / остановка служб с помощью PowerShell

Как и в случае с Get-Service, вы также можете использовать CIM для запуска и остановки служб. Хотя вы не можете напрямую использовать командлеты например Stop-Serviceми Start-Service. Вместо этого вам нужно вызвать метод. Хотя это менее интуитивно, но если вы уже освоились с CIM, вам это не помеха.

Если вы работаете с локальными службами, используйте Get-CimInstance. На этот раз ограничим количество сервисов только теми сервисами, которые мы хотим остановить или запустить с помощью и используем для этого параметр Filter. Параметр Filter (совместно с параметром Query) является отличным способом получить прицельный результаты.

— Запрос класса Win32_Service хранилища CIM локального компьютера для всех служб, для которых установлен тип запуска automatic ( StartMode=’Auto’)
— Запрос класса Win32_Service хранилища CIM локального компьютера для всех служб, которые также остановлены ( State=’Stopped’)
— Передача всех объектов, Invoke-CimMethod которым затем вызывается StartService метод для каждого из них.

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

Запуск / остановка служб на компьютерах по сети с помощью PowerShell

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

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

Создав сеанс CIM используя командлет Invoke-CimMethod не забудьте удалить этот сеанс, когда закончите.

Использование PowerShell для перезапуска службы

Может быть, вы хотите перезапустить уже запущенную службу. Это не проблема для PowerShell. Опять же, у вас есть два пути.

Использование Start и Stop-Service

Можно просто остановить и запустить службу командлетами Stop-Service и Start-Service любым из двух способов показанных ниже.

Использование Restart-Service командлета PowerShell

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

Изменение типа запуска

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

Вы можете быстро получить представление обо всех значениях типа запуска служб, используя, Group-Object показано ниже. На этом скриншоте показаны все возможные значения (в столбце Name) типа запуска доступные для службы.

как удаленно остановить службу windows

Как только вы узнаете текущий тип запуска, вы можете изменить его, используя Set-Service

В приведенном ниже примере устанавливается тип запуска Disabled.

Использование реестра

Чтобы установить тип запуска для службы в реестре через PowerShell, используйте командлет Set-ItemProperty. Приведенный ниже фрагмент изменяет тип запуска службы wuauserv на автоматический.

Таблица определения значения REG_DWORD для всех типов запуска.

REG_DWORD ЗначениеТип запуска
0Загружается (но не запускается) загрузчиком.
1Запускается во время инициализации ядра после служб, параметр запуска которых равен 0.
2Автоматически. Запускается smss.exe (диспетчер сеансов) или services.exe (контроллер служб).
3Вручную. Запускается диспетчером управления службами (SCM).
4Остановлена
5Отложенный старт

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *