Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Windows Powershell

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

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

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

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

12 комментариев
Шляпа (cpt-alatriste.ya.ru) 2009

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

Alisey (alisey.myopenid.com) 2009

Комментарий для cpt-alatriste.ya.ru:

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

archon (archon.name) 2009

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

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

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

aynyuh.livejournal.com 2009

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

ninjacolumbo.ya.ru 2009

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

name-zh.livejournal.com 2009

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

Евгений Степанищев (bolknote.ru) 2009

Комментарий для aynyuh.livejournal.com:

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

Евгений Степанищев (bolknote.ru) 2009

Комментарий для name-zh.livejournal.com:

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

Евгений Степанищев (bolknote.ru) 2009

Комментарий для ninjacolumbo.ya.ru:

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

name-zh.livejournal.com 2009

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

Евгений Степанищев (bolknote.ru) 2009

Комментарий для name-zh.livejournal.com:

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

Ной (sad-wind.ya.ru) 2009

Комментарий для cpt-alatriste.ya.ru:

Лечение насморка гильотиной прям.

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