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

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
10-Авг-2020 20:37

Написал я как-то давно один простой скрипт, удаляющий в указанной директории все поддиректории с заданными именами:
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-х. В общем, чем сложнее, тем лучше! Интуитивная понятливость — это для слабаков! Во время написания скрипта на нашем языке юзер в обязательном порядке должен проклясть все на свете и изобрести парочку новых ругательств. Только такой язык имеет право на жизнь. Вон, линуксоиды всю жизнь так живут и получают от этого всего неизъяснимый кайф. А мы чем хуже?

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

Похожие новости: Теги для поиска: #_powershell, #_powershell, #_cmd, #_powershell
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 29-Апр 11:52
Часовой пояс: UTC + 5