Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как полюбить PowerShell?

Ответить
Настройки темы
PowerShell - [решено] Как полюбить PowerShell?

Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте.
Как полюбить PowerShell?
Как на нем начать писать так, чтобы не было мучительно больно проклинать его создателей?
Суть в чем? Есть PS, он весь объектно-ориентированный. Он, по идее, должен быть классным. Он должен уметь чего всего.
Вопрос, как понять логику его работы? С каких шагов, инструментов, книг, практик, задач?
Как изменить свое отношение и понять, что то, что делалось на bash одним, достаточно простым и понятным способом сделается так же, но другим?
Буквально вчера мне попалось расширение powershell on steroids которое начало подсказывать возможные ошибки в синтаксисе.
Банально:
Код: Выделить весь код
echo Hello World
в Linux дает предсказуемое "Hello World"
в Windows:
"hello
world" (те две строки)
И казалось бы правильная строка выглядит как
Код: Выделить весь код
Write-Output -InputObject 'Hello World'
Но подижь так с ходу разберись.
Про вывод длинных строк это тоже отдельная история.

В общем ... как не гореть? Как дойти до его сильных сторон и элегантных решений?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:36, 21-08-2022

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Цитата lxa85:
как понять логику его работы? С каких шагов, инструментов, книг, практик, задач? »
Очень хорошо помогает увидеть что-то хорошее и красивое, реализованное на нём.
Как пример возможностей 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.
Цитата lxa85:
в Windows »
Код: Выделить весь код
echo "Hello World"
# или
"Hello World"
Нужно сказать, что в Powershell забиты алиасы из линукса, например, работают команды ls, rm, curl и т. п. Естественно, что ключи у них другие и работают они по-другому, но тем не менее.
Код: Выделить весь код
# вывести список псевдонимов
get-alias

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 21-08-2022 в 22:03.


Отправлено: 21:46, 21-08-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


DJ Mogarych, ни, ну до get-alias то я добрался
Даже принял концепцию Действие-Объект
Даже смирился, что строка в ответе тоже объект и его надо соотв. образом выводить.
Знаю, что с до реестра удобно добираться, и чуть-ли не всю систему через него админить можно.
У меня на каком-то ментальном уровне расхождение. Примерно как с С++

Примеры посмотрю, спасибо.

P.S. Побудило же создать тему ps2exe которая не работает в консоли (не смотря не примеры, и возможно это не баг, а фича), работает через gui (win-ps2exe) и в конечном счете задача перевода скрипт в бинарь решилась через ps on steroids.
Но блииин...

Из задачек -- пробовал дернуть через REST запрос (с передачей объекта понятное дело, с заголовком, токеном и пр) неподтвержденный ssl сертификат. Каково же было мое удивление, что необходимые ключи (что-то в р-не ignore ssl) нативно дописали только в последней версии.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 23:14, 21-08-2022 | #3


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Как полюбить PowerShell?
Как на нем начать писать так, чтобы не было мучительно больно проклинать его создателей?
Вопрос, как понять логику его работы? »
lxa85, PowerShell самый простой для понимания язык. Как задача звучит, так ее словами прямо и пишете, например:
Код: Выделить весь код
$path = 'C:\Files'
Get-ChildItem $path|Select Name, Length, LastWriteTime 
Теперь прочитаем написанное, переводя с английского слова:
Код: Выделить весь код
Переменная path = 'C:\Files'
Получи-ДочерниеОбъекты по указанному пути|и выбери мне имя, размер, дату последнего изменения
Всё. Просто поговорили с компьютером как с человеком.

Отправлено: 23:53, 21-08-2022 | #4


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Для того чтобы слегка вработаться в пошик нужно выучить три команды.
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*

Отправлено: 08:45, 22-08-2022 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Цитата lxa85:
ps2exe »
Модуль: https://github.com/MScholtes/PS2EXE

С GUI: https://github.com/MScholtes/TechNet...ter/PS2EXE-GUI

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:01, 22-08-2022 | #6


(*.*)


Сообщения: 36574
Благодарности: 6709

Профиль | Сайт | Отправить PM | Цитировать


lxa85, книгу прочесть... Тогда любовь будет крепче. А учиться по форумам и блогам с их ванлайнерами и псевдонимами - потом будешь переучиваться через боль.

-------
Канал Windows 11, etc | Чат @winsiders

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:38, 01-09-2022 | #7


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата Vadikan:
А учиться по форумам и блогам с их ванлайнерами и псевдонимами - потом будешь переучиваться через боль. »
Это вот да! Стопудово, как говорится...

Цитата lxa85:
В общем ... как не гореть? Как дойти до его сильных сторон и элегантных решений? »
Как выше подсказали - только читать и при этом, на начальном этапе, не форумы/блоги (их можно потом уже осваивать, после получения начальных принципов и знаний PS), а именно книги...
И учиться исключительно на полных наименованиях командлетов, ни в коем случае не привыкать изначально к алиасам (их уже после освоения можно будет применять, для простоты, когда уже будет ассоциация сразу же формироваться с полным наименованием). Прелесть Powershell (вернее одна из них), как раз, в понятных наименованиях "глагол-существительное"...
Помимо вышеуказанной литературы, могу посоветовать пару русскоязычных или переведенных: "Эффективное программирование в Windows PowerShell" Keith Hill, "Введение в Windows PowerShell" А.Попов.
- книжки немного устаревшие уже, для современных версий PS, но тем не менее, всё равно, актуальные и очень хороши для начального понимания принципов и отличий от...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:33, 02-09-2022 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Как полюбить PowerShell?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Как вывести полное имя компьютера в PowerShell? Vladskiy Скриптовые языки администрирования Windows 3 26-12-2020 18:56
PowerShell - Как разобрать Union в PowerShell? jkadaba Скриптовые языки администрирования Windows 7 21-10-2020 18:04
Как сделать скрипт Powershell? gunter051 Тест-форум 0 19-04-2019 15:21
PowerShell - [решено] Как удалить устройство в powershell yanus74 Скриптовые языки администрирования Windows 3 10-09-2015 10:56
Разное - [решено] Как даунгрейдить powershell nashgc Microsoft Windows 10 4 10-03-2015 19:51




 
Переход