Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

Представляем Monad, новую командную строку MSH (Часть 3)

Напечатать страницу
08.02.2006 23:07 | swissglide

Это третья статья из цикла о Monad - новой командной строке от Microsoft. По соответсвующим ссылкам, можно найти первую и вторую части.

В этой части мы рассмотрим изменения, касающиеся т.н. "трубопровода данных" - data pipeline.

Создание трубопровода для передачи данных
Старая командная строка Windows - cmd.exe, поддерживала возможность перенаправить данные, возвращенные процессом, в различные локации. Именно это и есть трубопровод данных. Для его задания используется символ "|". Встретив такой символ, командная строка передаст выходные данные одной команды в другую, но уже в качестве вводных. Таким образом, можно выстроить цепь команд.

Очевидно, что трубопровод не является новинкой - подобный метод используется для передачи данных между процессами практически во всех существующих командных строках. Но и здесь, как и в других областях, MSH на шаг впереди. Так, среди ее возможностей есть не только передача по трубопроводу простых текстовых команд, но и возможность передавать Strong Type Objects - объекты, в которых сохраняется не только сама информация, но и структура, в которую она организована.

Передача Strongly Typed Data обладает несколькими значительными преимуществами. Во-первых, это возможность избежать необходимости работы процесса-генератора и процесса-приемника с данными в одинаковой кодировке. Во-вторых, при сохранении структуры данных отпадает необходимость писать трудоемкие парсеры, переводящие информацию из потока данных, понятного процессу в поток, предстающий перед конечным пользователем.

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

Фраза "целое - это больше, чем просто сумма частей" очень хорошо подходит для описания самой идеи композитных данных в MSH. В большинстве случаев конкретное задание можно разбить на несколько четких шагов. Вместо того чтобы пытаться решить задачу целиком, давайте сначала научимся качественно реализовывать подзадачи.

Так как мы уже вполне комфортно чувствуем себя в обращении с cmdlet get-process, начнем именно с него. Нашей задачей будет создание трубопровода данных с вводным cmdlet where-object и его применение к каждому проходящему через трубопровод объекту:

MSH D:MshScripts> get-process | where-object { $_.Handles -gt 200 }

    Handles  NPM(K)    PM(K)      WS(K) VS(M)   CPU(s)     Id ProcessName

    -------  ------    -----      ----- -----   ------     -- -----------

        624      13    10548      15756    65    25.01   1656  CcmExec

        407       5     1684       3420    23    22.71    464  csrss

        274      11     7376      12696    55   565.91    212  explorer

        404      10     4472       2376    42    16.12    544  lsass

        282      12    35028      32416   176    21.93   3088  msh

        260       6     1276       2864    24    14.54    532  services

       1709      52    18092      24888   103    62.37    824  svchost

        209       6     2080       4320    36     4.80    940  svchost

        262      14     1500       3988    34    11.43    756  svchost

        284       0        0        216     2    77.96      4  System

        551      61     7332       4136    51    19.24    488  winlogon

        225       8     6364       7888    66     3.00   1708  wuauclt



Возможности трубопровода не ограниченны двумя уровнями:

209       6     2080       4320    36     4.80    940  svchost

        260       6     1276       2864    24    14.54    532  services

        262      14     1500       3988    34    11.64    756  svchost

        274      11     7376      12696    55   580.04    212  explorer

        284       0        0        216     2    78.89      4  System

        405      10     4472        588    42    16.28    544  lsass

        407      12    34632      33052   175    23.16   3088  msh

        408      12    18432      19221    99    20.01   3089  msh

        414       5     1684       3420    23    24.42    464  csrss

        551      61     7332       4136    51    19.34    488  winlogon

        618      13    10352      15740    64    25.38   1656  CcmExec

       1748      53    18312      24964   105    63.40    824  svchost



Использование инструментов наследования
MSH позволяет использовать не cmdlet-команды в качестве части трубопровода. Выходные данные такой цепи команд будут представлены в виде списка строк данных. Например, команда ping 127.0.0.1 | sort-object будет работать, но возможно не даст желаемого результата. MSH отсортирует полученные данные в алфавитном порядке и выведет результат на экран.

Источник: http://www.computerworld.com
Перевод: swissglide

Комментарии

Комментариев нет...
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.028 секунд (Общее время SQL: 0.013 секунд - SQL запросов: 51 - Среднее время SQL: 0.00026 секунд))
Top.Mail.Ru