Как получить список процессов на удаленном компьютере
Управление службами Windows с помощью PowerShell
27.07.2020
Itpro
PowerShell, Windows 10, Windows Server 2016
Комментариев 12
Основные командлеты PowerShell для управления службами Windows
Чтобы получить весь список командлетов Service, введите команду:
Get-Service: получаем список служб и их состояние
Get-Service spooler –ComputerName RM1,RM2
Вывести все свойства службы позволит командлет Select-Object:
Get-Service Spooler | Select DisplayName, Status, ServiceName, Can*
- Параметр -DependentServices позволяет вывести службы, которые зависят от данной службы; Параметр -RequiredServices позволяет вывести службы, от которых зависит данная служба.
Get-Service –Name Spooler — RequiredServices
Следующая команда выводит службы, которые зависят от службы Spooler:
Get-Service –Name Spooler — DependentServices
Для вывода служб с типом запуска Manual, выполните команду
Проверить, что в системе имеется указанная служба:
If (Get-Service «ServiceTest» — ErrorAction SilentlyContinue)
Остановка, запуск, приостановка и перезапуск служб из PowerShell
Get-service bits, spooler | where | stop-service –passthru
Командлет Start-Service запускает остановленные службы:
Get-Service samss | Format-List name, canpauseandcontinue
Следующая команда возобновляет работу всех приостановленных служб:
Get-service | where-object | resume-service
Командлет Restart-Service перезапускает службу:
Эта команда запускает все остановленные сетевые службы компьютера:
Get-service net* | where-object | restart-service
Set-Service – изменение настроек службы Windows
Изменим тип запуска службы spooler на автоматический:
Set-Service spooler –startuptype automatic –passthru
Можно перевести службу на ручной (manual) запуск:
Set-Service spooler –startuptype manual –passthru
Создание и удаление служб Windows c помощью PowerShell
В примере создадим новую службу с именем TestService.
Get-wmiobject win32_service — filter «name=’testservice'»
Изменить параметры новой службы можно командой
Set-Service — Name TestService — Description ‘My Service’ — StartupType Manual
Чтобы удалить службу используйте команду
(Get-WmiObject win32_service — Filter ″name=′TestService′″).delete()
Изменение учетной записи для запуска службы
Get-wmiobject win32_service — filter «name=’TestService'» | Select name, startname
Для изменения имени и пароля учетной записи выполняем команды.
Либо вы можете указать имя gMSA аккаунта. Пароль при этом не указывается.
Как управлять службами в Powershell командлетами Service
Получение списка служб
Get-Service | Get-Member - MemberType Properties
Возможно вывести только имена, статус и тип запуска:
Или выведем информацию по одному сервису:
Get-Service "WinRM" | Ft Name, Status, StartType
У сервисов есть короткое имя и отображаемое. Так мы выведем оба:
Get-Service - DisplayName "Win*" | Ft Name, DisplayName, Status, StartType
- Cannot find any service with service name Cannot find any service with display name Не удается найти службу с отображаемым именем
Кроме этого есть два ключа, которые тоже поддерживают маски:
Можно сравнить разницу с прошлым примером:
По каждому из них мы можем отфильтровать результат:
Get-Service | where - Property Status - eq Stopped
- Automatic — автоматический запуск вместе с системой. AutomaticDelayedStart — запуск после загрузки системы. Manual — ручной запуск. Disabled — отключенный.
Get-Service | where - FilterScript | ft 'Name','StartType','Status'
Есть несколько свойств, которые не выведены в параметры — это:
- CanPauseAndContinue — можно ли приостановить работу сервиса и возобновить. CanShutdown — может ли быть выключен. CanStop — может ли быть полностью остановлен.
Gsv - ServiceName 'Winrm' | SELECT CanPauseAndContinue, CanShutdown, CanStop | fl
Как отослать сообщение через Powershell
Остановка, перезапуск и запуск служб
Можно выполнить получение, остановку и запуск в одну команду:
Stop-Service - DisplayName 'Windows Remote Management (WS-Management)' - Confirm
Stop-Service 'WinR*' - Include '*M' Start-Service 'WinR*' - Include '*M'
- Cannot stop service ‘Remote Procedure Call (RPC) (RpcSs)’ because it has dependent services. It can only be stopped if the Force flag is set. Не удается получить доступ к зависимым службам «Удаленный вызов процедур (RPC) (RpcSs)».
Перезапуск сервисов работает так же со всеми параметрами:
Invoke-Command - ComputerName 'AD1','localhost' - ScriptBlock
Восстановление и приостановка работ служб
Командой ниже мы получи, нажмем паузу и восстановим работу сервиса Winmgmt:
Get-Service - Name 'Winmgmt' | Suspend-Service | Resume-Service
- Service ‘Windows Remote Management (WS-Management)’ cannot be suspended because the service does not support beingsuspended or resumed. Не удается приостановить службу «Spooler», так как этой службой не поддерживается приостановка или возобновление.
Изменение с Set-Service
Set-Service 'WinRM' - StartupType Automatic
В случае изменения сервисов нельзя использовать маски *.
Через эту команду можно так же выполнить запуск и остановку:
Set-Service 'WinRM' - Description 'что вы сделали с PS'
Команды изменения можно выполнять удаленно:
Set-Service WinRM - ComputerName 'AD1' - StartupType Automatic
Создание сервисов с New-Service
New-Service - Name 'TestService' - BinaryPathName 'C:\test. exe'
Параметры, которые в последующем нельзя будет изменить через PS:
- DisplayName — полное отображаемое имя. Credential — учетная запись, под которой будет происходить запуск. DependsOn — от кого будет зависеть.
- Service ‘Testing Services In Powershell (TestService1)’ cannot be created due to the following error: The account name is invalid or does not exist, or the password is invalid for the account name specified
Кроме этого есть параметры, которые возможно изменить через команды выше:
Получение с помощью WMI класса
Что бы получить список аналогичный Get-Service выполните:
В классе WMI можно увидеть больше свойств, которые можно использовать:
Get-WmiObject - Class 'Win32_Service' | Get-Member - MemberType Properties
О том как работать с процессами в Powershell мы писали в прошлой статье.
Изменение с помощью WMI класса
Для управления в WMI существую методы. Все методы класса можно получить так:
Get-WmiObject - Class 'Win32_Service' | Get-Member - MemberType Method
Удалим сервис, который создавался через New-Service:
Get-WmiObject - Class 'Win32_Service' | Get-Member - MemberType Method
Список процессов удаленного компьютера
Get-Process – получение списка запущенных процессов
По-умолчанию выводятся следующие свойства запущенных процессов:
Чтобы получить все свойства нескольких процессов:
Get-Process | Where-Object | Format-Table Id, Name, mainWindowtitle
Чтобы найти зависшие процессы (которые не отвечают), выполните команду:
Start-Process, Stop-Process: запуск и остановка процессов из PowerShell
Чтобы запустить новый процесс с помощью PowerShell используется команда:
Можно запустить программу и передать ей аргументы:
PowerShell: управление процессами на удаленном компьютере
Мониторинг производительности удаленного компьютера без входа на него
Дополнительная информация
Установите набор Windows NT 4.0 на удаленном компьютере.
В командной строке введите следующую команду, а затем нажмите клавишу ВВОД:
Это означает, что вы уже успели выполнить команду один раз.
Как посмотреть список процессов в Windows на удаленном компьютере
/SVC — отображение служб для каждого процесса;
/V — ведение подробного протоколирования;
Используемые операторы сравнения означают следующее:
Статья Команда TASKLIST. Получение списка процессов, связанных служб, библиотек и функций. Фильтрация.
Dragokas
Very kind Developer
2-й и 3-й вариант не будут урезать в выводе имя файла до 25 символов.
Задача:
Узнать, выполняется ли процесс calc. exe (или другой) в системе:
Dragokas
Very kind Developer
Или без find, чтобы увидеть какие конкретно функции из библиотеки испольует.
Например, Показать зависшие процессы (в диспетчере задач «Не отвечает»):
Dragokas
Very kind Developer
Как работать с процессами через Powershell Get-Process
Попробуем преобразовать значение из килобайтов в мегабайты:
Где:
-Select-Object обозначаем столбцы, которые хотим вывести.
Как вывести детальную информацию через Powershell Get-Process
Под такой командой powershell я могу узнать имя, которое пишется в окошке:
Так мы выведем все запущенные процессы, у которых есть GUI:
Как отфильтровать процессы по утилизации в Powershell
Запуск и остановка процессов через Powershell
Конечно мы можем остановить процесс по идентификатору или имени:
Таким командлетом мы остановим самый старый процесс:
Запуск экземпляра и его завершение через 5 секунд:
Все остальные команды можно узнать с помощью:
Справки с вариантами использования команд powershell:
Источники:
Https://winitpro. ru/index. php/2019/09/05/upravlenie-sluzhbami-windows-powershell/
Https://fixmypc. ru/post/poluchenie-spiska-i-zapusk-sluzhb-powershell-service-i-upravlenie/
Https://doma35.ru/computers/spisok-protsessov-udalennogo-kompyutera/