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) № 1
Всё хорошо, но до последнего абзаца. Лечение насморка гильотиной прям. Нафиг нужно оно тогда, если только руками запускается? Это ж никакой автоматизации, получается.
Ной (sad-wind.ya.ru) № 12
Лечение насморка гильотиной прям.

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

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

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

В том числе поэтому скрипты и нельзя запускать просто так. Но в этом лично я не вижу проблемы — запуск произвольных скриптов из самого шелла включается одной командой раз и навсегда (хоть и не рекомендуется так делать), а запуск по двойному щелчку мышью не особенно и нужен.
Евгений Степанищев (bolknote.ru) автор № 11
Комментарий для name-zh.livejournal.com:

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