Windows Powershell

Вчера ночью смотрел на Windows Powershell. Красивый, мощный, удобный язык командной строки («песню о пиве» я уже написал). Очень понравился, изучается очень быстро, позволяет многое. Основная идея — конвееры, по которым ходят не строки (как в Linux/Unix), а объекты. То есть вы можете получить список процессов, отфильтровать их не как текстовые строки, а как набор объектов — по свойствам, дальше, ну, к пример, отсортировать по какому-то свойству и выгрузить в XML.

Очень хорошо называются командлеты, например, «Get-Process», правда, сразу понятно что делает эта команда. Причём, у команд есть алиасы, которые порадуют любителей Unix: можно написать «Get-Help Get-Process» или «man ps». Где «man» — алиас для «Get-Help», «ps» — алиас для «Get-Process».

Язык слаботипизированный, но можно и жёстко задавать тип (например, в параметрах функций), если хочется.

Кардинально решена проблема с безопасностью (язык мощный, сразу спровоцирует написание вирусов) — файлы этого языка (расширение — .ps1) не запускаются, а открываются в блокноте. Запуск команд возможен или из оболочки руками или довольно нетривиальными способами (простой юзер не справится).
22 октября 2009 14:33

Шляпа (cpt-alatriste.ya.ru)
22 октября 2009, 16:10

Всё хорошо, но до последнего абзаца. Лечение насморка гильотиной прям. Нафиг нужно оно тогда, если только руками запускается? Это ж никакой автоматизации, получается.

Alisey (alisey.myopenid.com)
22 октября 2009, 16:24, ответ предназначен Шляпа (cpt-alatriste.ya.ru):

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

archon (archon.name)
22 октября 2009, 17:08

Особый шик языка в том, что это, фактически, надстройка над .NET. То есть, например, скачав MySQL Connector/NET в виде библиотеки для .NET, можно её подключить прямо в шелл-скрипте и полноценно использовать.

Ну и стандартные пространства имён, входящие в .NET, тоже можно подключать, конечно. Формочку нарисовать? Без проблем, это всего три строки.

В том числе поэтому скрипты и нельзя запускать просто так. Но в этом лично я не вижу проблемы — запуск произвольных скриптов из самого шелла включается одной командой раз и навсегда (хоть и не рекомендуется так делать), а запуск по двойному щелчку мышью не особенно и нужен.

aynyuh.livejournal.com (aynyuh.livejournal.com)
22 октября 2009, 18:10

Так удивился, прочитав. Думал, что ты уже давно с ним знаком :)

ninjacolumbo.ya.ru (ninjacolumbo.ya.ru)
22 октября 2009, 18:19

«…у команд есть алисы…»

name-zh.livejournal.com (name-zh.livejournal.com)
22 октября 2009, 19:03

Только теряется же гибкость. Ведь не все же программы выдают Powershell'овские объекты.

bolk (bolknote.ru)
22 октября 2009, 19:39, ответ предназначен aynyuh.livejournal.com:

Ну, я слышал звон, а теперь я ещё и попробовал его потрогать. Отличная вещь!

bolk (bolknote.ru)
22 октября 2009, 19:40, ответ предназначен name-zh.livejournal.com:

Какие не выдают?

bolk (bolknote.ru)
22 октября 2009, 20:20, ответ предназначен ninjacolumbo.ya.ru:

Поправил, спасибо, Саня!

name-zh.livejournal.com (name-zh.livejournal.com)
23 октября 2009, 11:27

любые не знающие о его существовании но имеющие текстовый интерфейс

bolk (bolknote.ru)
23 октября 2009, 14:08, ответ предназначен name-zh.livejournal.com:

Текстовые строки, конечно же, тоже можно обрабатывать. Просто по конвееру будет передаваться набор объектов-строк. Но такие случаи, видится мне, крайне редки.

Ной (sad-wind.ya.ru)
5 ноября 2009, 19:06, ответ предназначен Шляпа (cpt-alatriste.ya.ru):

Лечение насморка гильотиной прям.
В *nix то же самое и никто не ругается почему-то.
./script.sh просто так не запутсится. Придётся либо прямо сказать sh -c ./script.sh, либо сделать ему chmod +x.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)