Пост ненависти к Могучему Шеллу

Написал я как-то давно один простой скрипт, удаляющий в указанной директории все поддиректории с заданными именами:

Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue

Давно им не пользовался, а тут он понадобился. Запускаю — ничего не удалил.

«WTF?», думаю. Стал копаться. Возился-возился, всё перебрал, и список предварительно создал, и имена менял — всё равно ничего не удаляет. В конце-концов в их доке прочитал: "Вообще-то, -Include глючит, когда используется вместе с -Recurse, так что юзайте костыльную конструкцию.":

Because the Recurse parameter in Remove-Item has a known issue, the command in this example uses Get-ChildItem to get the desired files, and then uses the pipeline operator to pass them to Remove-Item.

Ну, ладно, переписал с использованием данного костыля. Один хрен — не удаляет ничего. Более того, Get-ChildItem с -Include возвращает пустоту. Опять, что я только не делал, как я только не извращался с параметрами — не работает. Главное, с -Exclude работает, а с -Include никак. Целый день на это убил: всё думал, что где-то в параметрах накосячил, что не учел какой-то хитрый нюанс. И что в итоге оказалось? Поставил их PS7.1 — в нем заработало. В нем даже первый бескостыльный вариант с использованием только Remove-Item заработал. В общем, оказался их баг.

Но намучившись с их Могучим Шеллом, я полез в Google почитать, отчего их шелл имеет такой зубодробительный синтакс. Млин, они его позиционируют, как .NET для консоли, но синтаксом C# у них даже не пахнет. Вместо него…

В общем, наткнулся на такую статью: "What I Hate About PowerShell". Как говорится: «I couldn’t agree more.»

Подозреваю, что команда Могучего Шелла — это сборище обожателей Bash’а.

— Давайте, наконец, сделаем для Windows консоль, в которой можно будет писать сложные скрипты. А то наш cmd устарел, да так, что нам уже немножечко стыдно.
— Давайте! На основе чего будем делать? У нас уже есть VBScript, JScript. Наконец, у нас есть языки для .NET: C#, VB. Может, на C# сделаем? В смысле, будем использовать C# как язык для скриптов для нашей консоли. Тем более, мы же хотим туда .NET классы подтянуть.
— Нее, ну ты чё, чувак, какой C#? Настоящие гики юзают bash! Вот и мы давайте сделаем bash для Windows. Плевать, что синтакс для bash писала, видимо, толпа укуренных хипстеров в далеких 1960-х. В общем, чем сложнее, тем лучше! Интуитивная понятность — это для слабаков! Во время написания скрипта на нашем языке юзер в обязательном порядке должен проклясть все на свете и изобрести парочку новых ругательств. Только такой язык имеет право на жизнь. Вон, линуксоиды всю жизнь так живут и получают от этого всего неизъяснимый кайф. А мы чем хуже?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Пользуетесь ли вы PowerShell и устраивает ли он вас?

  • 30,3%Не пользуюсь40

  • 29,6%Попробовал — не понравилось39

  • 23,5%Пользуюсь и всем доволен31

  • 12,9%Пользуюсь, но не доволен17

  • 3,8%Ура! Наконец-то я могу в Windows юзать любимый bash!5

Проголосовали 132 пользователя. Воздержались 26 пользователей.

Источник: habr.com