Показать полную графическую версию : [решено] Как полюбить PowerShell?
Здравствуйте.
Как полюбить PowerShell?
Как на нем начать писать так, чтобы не было мучительно больно проклинать его создателей?
Суть в чем? Есть PS, он весь объектно-ориентированный. Он, по идее, должен быть классным. Он должен уметь чего всего.
Вопрос, как понять логику его работы? С каких шагов, инструментов, книг, практик, задач?
Как изменить свое отношение и понять, что то, что делалось на bash одним, достаточно простым и понятным способом сделается так же, но другим?
Буквально вчера мне попалось расширение powershell on steroids которое начало подсказывать возможные ошибки в синтаксисе.
Банально:
echo Hello World
в Linux дает предсказуемое "Hello World"
в Windows:
"hello
world" (те две строки)
И казалось бы правильная строка выглядит как
Write-Output -InputObject 'Hello World'
Но подижь так с ходу разберись.
Про вывод длинных строк это тоже отдельная история.
В общем ... как не гореть? Как дойти до его сильных сторон и элегантных решений?
DJ Mogarych
21-08-2022, 21:46
как понять логику его работы? С каких шагов, инструментов, книг, практик, задач? »
Очень хорошо помогает увидеть что-то хорошее и красивое, реализованное на нём.
Как пример возможностей Powershell могу привести вот эту задачу: http://forum.oszone.net/nextoldesttothread-250886.html. Excel-файл, который я приложил, это результат полностью автоматической обработки исходного txt.
У меня очень много всего на работе автоматизировано на Powershell, шлются красивые отчёты по почте с формированием файлов Excel, с графиками и т. д. Пользователь при входе в домен пишет в свою учётку в AD имя машины, время входа, MAC-адрес и т. п., автоматически обрабатывается штатное расписание, выгружаемое из 1С, присылаются отчёты, кто появился-исчез из штатки по сравнению с AD, и так далее. Я считаю, что Powershell - это одна из наикрутейших вещей в Windows.
Есть хорошая книжка - Learn PowerShell in a Month of Lunches, я по ней начинал. Ещё есть Windows PowerShell in Action.
в Windows »
echo "Hello World"
# или
"Hello World"
Нужно сказать, что в Powershell забиты алиасы из линукса, например, работают команды ls, rm, curl и т. п. Естественно, что ключи у них другие и работают они по-другому, но тем не менее.
# вывести список псевдонимов
get-alias
DJ Mogarych, ни, ну до get-alias то я добрался :)
Даже принял концепцию Действие-Объект
Даже смирился, что строка в ответе тоже объект и его надо соотв. образом выводить.
Знаю, что с до реестра удобно добираться, и чуть-ли не всю систему через него админить можно.
У меня на каком-то ментальном уровне расхождение. Примерно как с С++ =)
Примеры посмотрю, спасибо.
P.S. Побудило же создать тему ps2exe которая не работает в консоли (не смотря не примеры, и возможно это не баг, а фича), работает через gui (win-ps2exe) и в конечном счете задача перевода скрипт в бинарь решилась через ps on steroids.
Но блииин...
Из задачек -- пробовал дернуть через REST запрос (с передачей объекта понятное дело, с заголовком, токеном и пр) неподтвержденный ssl сертификат. Каково же было мое удивление, что необходимые ключи (что-то в р-не ignore ssl) нативно дописали только в последней версии.
Как полюбить PowerShell?
Как на нем начать писать так, чтобы не было мучительно больно проклинать его создателей?
Вопрос, как понять логику его работы? »
lxa85, PowerShell самый простой для понимания язык. Как задача звучит, так ее словами прямо и пишете, например:
$path = 'C:\Files'
Get-ChildItem $path|Select Name, Length, LastWriteTime
Теперь прочитаем написанное, переводя с английского слова:
Переменная path = 'C:\Files'
Получи-ДочерниеОбъекты по указанному пути|и выбери мне имя, размер, дату последнего изменения
Всё. Просто поговорили с компьютером как с человеком.
Для того чтобы слегка вработаться в пошик нужно выучить три команды.
1. get-help
например get-help get-aduser выдаст коротенький хелп по get-aduser
get-help get-aduser -example
покажет несколько примеров, а
get-help get-aduser -online тупо откроет подробную статью по командлету на сайте мс.
дальше - у каждого объекта есть набор свойств и методов которые можно дергать, сравнивать, сортировать, фильтровать... короче делать все что угодно из того что можно. и все что можно сделать познается в один пайп и две буквы
2. | gm (Get-Member).
так
get-childitem покажет список файлов и папок в текущей директории
а get-childitem | gm покажет что с ними можно сотворить прямо сразу, например так (get-childitem).length - покажет сколько их там всех
а вот так (get-childitem -path z:/папка_с_ненужными_файлами).delete() удалит к лешему.
так что зная get-help и get-member можно уже много чего наворотить. ну а если забыл какую-то команду то есть
3. get-command
самым примитивным вариантом использования get-command будет использование куска команды с *, например если захотелось посмотреть что пошик прямо в один командлет может сотворить с компьютером то:
get-command *computer*
DJ Mogarych
22-08-2022, 09:01
ps2exe »
Модуль: https://github.com/MScholtes/PS2EXE
С GUI: https://github.com/MScholtes/TechNet-Gallery/tree/master/PS2EXE-GUI
lxa85, книгу (https://t.me/sterkin_ru/1243) прочесть... Тогда любовь будет крепче. А учиться по форумам и блогам с их ванлайнерами и псевдонимами - потом будешь переучиваться через боль.
А учиться по форумам и блогам с их ванлайнерами и псевдонимами - потом будешь переучиваться через боль. »
Это вот да! Стопудово, как говорится...
В общем ... как не гореть? Как дойти до его сильных сторон и элегантных решений? »
Как выше подсказали - только читать и при этом, на начальном этапе, не форумы/блоги (их можно потом уже осваивать, после получения начальных принципов и знаний PS), а именно книги...
И учиться исключительно на полных наименованиях командлетов, ни в коем случае не привыкать изначально к алиасам (их уже после освоения можно будет применять, для простоты, когда уже будет ассоциация сразу же формироваться с полным наименованием). Прелесть Powershell (вернее одна из них), как раз, в понятных наименованиях "глагол-существительное"...
Помимо вышеуказанной литературы, могу посоветовать пару русскоязычных или переведенных: "Эффективное программирование в Windows PowerShell" Keith Hill, "Введение в Windows PowerShell" А.Попов.
- книжки немного устаревшие уже, для современных версий PS, но тем не менее, всё равно, актуальные и очень хороши для начального понимания принципов и отличий от...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.