Инструменты пользователя

Инструменты сайта


конвейер

Конвейер

Как обычно, обратимся к трудам великих. Как написано в свитках:

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

Для создания конвейера в PowerShell команды соединяются друг с другом с помощью оператора канала |. Результат каждой команды используется в качестве входных данных для следующей.

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

Get-Service | Sort-Object Status
 
Status   Name               DisplayName
------   ----               -----------
Stopped  SensorDataService  Служба данных датчиков
Stopped  seclogon           Вторичный вход в систему
Stopped  SDRSVC             Программа архивации данных
...

Модернизируем предыдущею команду, добавив в конвейер - вывод первых 10 объектов

Get-Service | Sort-Object Status | Select-Object -First 5

Просмотр структуры объектов

Объекты, возвращаемые командой, проще всего проанализировать, передав ее выходные данные в командлет Get-Member. Командлет Get-Member показывает формальное имя типа объекта и полный список его элементов.

Наиболее удобная команда для энтого дела – Get-Member Посмотрим, какие есть методы у служб

Get-Service | Get-Member
 
   TypeName: System.ServiceProcess.ServiceController
 
Name                      MemberType    Definition                         
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName   
RequiredServices          AliasProperty RequiredServices = ServicesDependedOn
Disposed                  Event         System.EventHandler Disposed(System.Object, System.EventArgs) 
Close                     Method        void Close() 
...

Свойства

А теперь взглянем только на свойства

Get-Service | Get-Member -MemberType Properties
 
   TypeName: System.ServiceProcess.ServiceController
 
Name                MemberType    Definition
----                ----------    ----------
Name                AliasProperty Name = ServiceName
RequiredServices    AliasProperty RequiredServices = ServicesDependedOn
CanPauseAndContinue Property      bool CanPauseAndContinue {get;}
CanShutdown         Property      bool CanShutdown {get;}
CanStop             Property      bool CanStop {get;}
...

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

Get-Process | Get-Member | Out-Host -Paging

Получим информацию о свойствах

Get-Process | Get-Member -MemberType Properties

Было найдено свойство CPU, давайте посмотрим какой процесс самый прожорливый, отсортировав процессы по убыванию

Get-Process | Sort-Object -Property CPU -Descending
 
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    758      18    23980      26440     622,84  44184   0 audiodg
    580      55   544188     514420     171,59   4224  15 qbittorrent
   1843      62   160520     208036      89,22   7896  15 chrome
...

А теперь посмотрим только самый первый

Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 1
 
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    760      19    24040      26472     623,86  44184   0 audiodg

Методы

Посмотрим какие есть методы у командлета Get-Service

Get-Service | Get-Member -MemberType Method
 
 
   TypeName: System.ServiceProcess.ServiceController
 
Name                      MemberType Definition
----                      ---------- ----------
...
Pause                     Method     void Pause()
Refresh                   Method     void Refresh()
Start                     Method     void Start(), void Start(string[] args)
Stop                      Method     void Stop()

Выберем первые три службы(по умолчанию по алфавиту):

et-Service | Select-Object -First 3
 
Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           Служба маршрутизатора AllJoyn
Stopped  ALG                Служба шлюза уровня приложения
Stopped  AppIDSvc           Удостоверение приложения

И запустим их оптом

Get-Service |Select-Object -First 3 | foreach start

Импорт\Экспорт

Вывод результата команды в текстовый файл

Get-Service | Out-File 'C:\Users\UserName\Documents\services.txt'

в csv формат

Get-Service | Export-Csv 'C:\Users\UserName\Documents\services.csv'

Импорт из файла выше

Import-Csv 'C:\Users\UserName\Documents\services.csv'

Отсортируем первые десять объектов и отформатируем вывод

Import-Csv 'C:\Users\UserName\Documents\services.csv' | Select-Object -First 10 | Format-Table
конвейер.txt · Последнее изменение: 2020/05/23 18:03 — admin