Powershell get-service -Свойство статуса проблема

Вопрос или проблема

Под PowerShell >= 5.1

Я получаю:

PS C:\> get-service -Status Running
Get-Service: Параметр с именем 'Status' не найден

Но свойство все равно существует?

PS C:\> get-service | Get-Member

PowerShell предназначен для решения подобных проблем через составление – если Get-Service возвращает объекты со свойством Status, по которому вы хотите фильтровать, просто составьте новый конвейер, добавив командлет Where-Object ниже:

Get-Service |Where-Object Status -eq Running

.

Ответ или решение

Проблема с параметром -Status в PowerShell при использовании Get-Service

При использовании PowerShell версии 5.1 и выше, многие пользователи сталкиваются с ошибкой при попытке фильтрации служб с помощью команды Get-Service -Status Running. Ошибка, которую следует знать, заключается в следующем:

Get-Service: A parameter cannot be found that matches parameter name 'Status'

Причины проблемы

  1. Отсутствие параметра: Дело в том, что команда Get-Service не поддерживает параметр -Status. Это значит, что, несмотря на то, что объект, который возвращает команда, содержит свойство Status, фильтрация по этому свойству должна осуществляться другим способом.

  2. Структура команд: PowerShell построен на принципах композиции, то есть вы можете комбинировать команды для достижения желаемого результата. В данном случае, вам нужно использовать возможности командного конвейера (pipeline).

Решение проблемы

Чтобы отфильтровать службы по состоянию, рекомендуется использовать команду Where-Object. Этот подход позволит вам получить службы, которые имеют определенное состояние. Ниже приведён пример правильного синтаксиса:

Get-Service | Where-Object { $_.Status -eq 'Running' }

Здесь мы используем Where-Object, чтобы фильтровать результаты, возвращаемые командой Get-Service, по свойству Status. В этой команде $_ ссылается на каждый объект службы в конвейере, а -eq 'Running' означает, что мы ищем только те службы, которые находятся в состоянии "Работающая".

Пояснение к команде

  • Get-Service: Эта команда возвращает объекты, представляющие службы, зарегистрированные на вашем компьютере.
  • Where-Object: Эта команда позволяет фильтровать объекты на основе заданного условия. В данном случае мы проверяем свойство Status, используя оператор равенства -eq.

Заключение

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

Если у вас есть дополнительные вопросы или нужна помощь с другими командами PowerShell, не стесняйтесь спрашивать!

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

Капча загружается...