Re: Где найти полную документацию на язык PowerShell?
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.11.20 11:31
Оценка: 50 (4) +1 :))) :))
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>По этому чуду вообще есть классический reference, как на тот же bash?
Сам по себе "язык" в нём достаточно простой, хоть и наркоманский. Его писали какие-то альтернативные люди. Есть подозрение, что он разработан на спор — кто-то из Редмонда взял кого-то в Редмонде на слабо:

- невозможно придумать промышленный язык с более WTF поведением, чем JavaScript!
— hold my beer!

Ихнее автораскрытие одноэлементных списков может свести с ума любого.

Те, кто реализовывал идеи этого hold-my-beer-а, тоже прониклись шуткой. Своей основной задачей парни взяли "сделать его немыслимо тормозным". Ну, вот невозможно же поверить, что современный 2.6 гигагерцовый core i7 может потратить минуту на вычисление суммы чисел в csv файле. И тем не менее! Никакому JS и не снилось такое адское торможение.
Понятно, что просто сделать скриптовый язык с убогой интерпретируемой математикой для такого недостаточно — надо было придумать ущербную объектную модель, чтобы каждая строчка из csv превращалась в PSObject максимально тормозным и болезненным способом.
Я практически уверен, что одной ногой в этом стоял кто-то из аристократов команды Visual Basic. Это те ребята, которым не терпится поделить разработчиков на касты. Например, пусть тупые морлоки складывают активиксы на формы; они не могут выйти из-под власти элоев потому, что писать активикс надо на совсем другом языке. С этим всю карьеру боролся робингуд Хейльсберг — в его Delphi с самого начала использовался один и тот же язык и для написания контролов, и для их склеивания.
Но нет, дело VB живёт и побеждает — в первых двух версиях павершелла возможности писать коммандлеты на нём самом нет; и после добавления этой возможности обратно, она остаётся стыдным и грязным секретом — вы вряд ли найдёте нормальное руководство; только обрывки блогов типа "я сумел сделать вот такую штуку, ухты!" без малейших пояснений границ применимости.

Вся идея павершелла сводится к "никакой повторной используемости!!!". Злой гений, который стоит за его разработкой, был бы рад вообще запретить сохранять скрипты на файлухе, но видать ему не разрешили.

Куда ни ткни — всё сделано так, чтобы пользоваться было нельзя.
Вот, к примеру, Write-Progress.
Вы думаете, что в языке, который весь построен вокруг конвееров, коммандлет для показа прогресса операции, будет приспособлен для того, чтобы показывать прогресс размотки конвеера?
Хрен там: это просто убогий println, который вообще ничего не умеет. На кого он рассчитан? Люди, которые могут построить граф операций и рассчитать оценку времени работы на основе истории частичного исполнения, всяко могут и сами вывести прогресс бар. А те, кто пишет двухстрочные скрипты, вряд ли смогут (да и не обязаны) поделить x на y без ошибок.

Вот как должен был выглядеть write-progress здорового человека:

function Tick ([string]$activity = 'Counting') 
{ 
    $id = [Math]::Abs($activity.GetHashCode());
    $i = 0; 
    $a = @($input); 
    $total = $a.Count; 
    $t0 = Get-Date; 
    $t = $t0;
    foreach($_ in $a) 
    {
        $_;
        $i++;
        $elapsed = (Get-Date)-$t;
        if($elapsed.TotalMilliseconds -gt 200) 
        { 
            $elapsed = (Get-Date)-$t0;
            Write-Progress -Id $id.GetHashCode() -PercentComplete (100*$i / $total) -Activity $activity -SecondsRemaining ($elapsed.TotalSeconds * (($total/$i - 1))) -Status "$i of $total" 
            $t = Get-Date;
        }
    }
    Write-Progress -Id $id.GetHashCode() -Completed -Activity $activity 
}

Его можно применять в стиле
(Get-Content $fileName -Raw | ConvertFrom-Json | Tick | where {$_.user_specific}) | measure -Property total_units -Sum | ft

То есть втыкаем в любое место пайплайна | Tick | вместо | и оно начинает показывать прогресс исполнения. Я потратил массу времени на то, чтобы это написать, и до сих пор не уверен, что написал правильно. В предыдущем варианте там ещё был параметр, который задаёт "первые x секунд прогресс не показывать", чтобы не тормозить короткие операции. Но он, как потом выяснилось, работал не так, как я ожидал — пришлось выкинуть.

В общем, бегите, бегите из него. Powershell — это путь боли.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Где найти полную документацию на язык PowerShell?
От: vsb Казахстан  
Дата: 03.11.20 10:49
Оценка: 119 (4)
https://www.microsoft.com/en-us/download/details.aspx?id=36389 вроде язык с тех времён не менялся.

Позиция разработчиков из MS: https://github.com/MicrosoftDocs/PowerShell-Docs/issues/4020

> it was a significant amount of work and that the value provided to the community was comparably very low


Типа спецификацию писать сложно, а читать её всё равно никто не будет. Поколение зумеров хочет 5-минутные статейки: https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-5.1

Видимо нужно адаптироваться или отказываться от новых инструментов.
Отредактировано 03.11.2020 10:54 vsb . Предыдущая версия . Еще …
Отредактировано 03.11.2020 10:53 vsb . Предыдущая версия .
Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 02.11.20 21:37
Оценка: 5 (1)
Хочу иметь полную документацию на скриптовый язык PowerShell. У MS на странице Windows PowerShell Reference лежит невнятный набор тематических ссылок. В разделе "Docs/PowerShell/Scripting/Reference" лежит туча независимых страниц, на каждой из которых описывается что-нибудь одно. Гугл по запросу "powershell reference" выдает множество различных "PowerShell Commands", "Quick Guide" и т.п.

По этому чуду вообще есть классический reference, как на тот же bash?
powershell reference документация полная
Re[3]: Где найти полную документацию на язык PowerShell?
От: vsb Казахстан  
Дата: 03.11.20 12:06
Оценка: :)
Здравствуйте, Евгений Музыченко, Вы писали:

vsb>>Поколение зумеров хочет 5-минутные статейки


ЕМ>Типа, серьезные люди на таком не пишут? Я бы вот тоже не писал, будь у них более приличный скриптовый язык.


Не, я к тому, что подход к документации другой. А так-то альтернатив особо нет, bat уже явно не лучше.
Re[4]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.11.20 12:16
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>я к тому, что подход к документации другой.


Ну, так-то, для любого языка обязана существовать более-менее адекватная синтаксическая/семантическая спецификация, из которой можно понять, какие конструкции допустимы, какие — нет, и какой смысл несет та или иная конструкция. А уже в довесок к ней может существовать любое количество обучающих материалов любого уровня в рамках "другого подхода".
Re[3]: Где найти полную документацию на язык PowerShell?
От: Skorodum Россия  
Дата: 04.11.20 10:07
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Безусловно. До сих пор помню шок, испытанный при первом взгляде на PS-скрипт. В первый момент показалось, что текст хитрым образом обфусцирован или просто испорчен.

+1
Re: Где найти полную документацию на язык PowerShell?
От: kov_serg Россия  
Дата: 02.11.20 22:08
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>По этому чуду вообще есть классический reference, как на тот же bash?

Такой пойдёт? https://github.com/MicrosoftDocs/PowerShell-Docs
Re[2]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.11.20 07:21
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Такой пойдёт? https://github.com/MicrosoftDocs/PowerShell-Docs


Это, судя по всему, исходники для страниц MS — в таком же "кусочном" формате, и с гипертекстом только по заголовкам разделов (эти убогие сумели выделить названия команд синим, но не осилили сделать с них гиперссылки). В каком-нибудь PDF документацию выпускали, или только на сайте и ковыряться?
Re[3]: Где найти полную документацию на язык PowerShell?
От: Danchik Украина  
Дата: 03.11.20 10:27
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, kov_serg, Вы писали:


_>>Такой пойдёт? https://github.com/MicrosoftDocs/PowerShell-Docs


ЕМ>Это, судя по всему, исходники для страниц MS — в таком же "кусочном" формате, и с гипертекстом только по заголовкам разделов (эти убогие сумели выделить названия команд синим, но не осилили сделать с них гиперссылки). В каком-нибудь PDF документацию выпускали, или только на сайте и ковыряться?


Пиши не пиши документацию, все равно пакетов кучи. Я выучил базовыее команды, потом поиском по гуглу искал интерполяцию строк, try cacth, как трансформировать обьекты, как прокидывать параметры. Так и пришло прозрение. На StackOverfow ответов сотни. Также хорошие пакеты имеют документацию https://docs.microsoft.com/ru-ru/powershell/scripting/learn/ps101/02-help-system?view=powershell-7
Re[4]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.11.20 10:35
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Я выучил базовыее команды, потом поиском по гуглу искал интерполяцию строк, try cacth, как трансформировать обьекты, как прокидывать параметры.


Вот я и спрашиваю, можно ли писать скрипты для PS, не разыскивая каждый раз нужный кусок документации. Насколько я знаю, для любого другого ЯП (по крайней мере, вышедшего за пределы экспериментального) существует официальная и полная спецификация, в виде хоть единого документа, хоть нескольких. А для PS такое вообще существует?
Re[2]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.11.20 11:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>https://www.microsoft.com/en-us/download/details.aspx?id=36389


Спасибо! Как-то я не догадался ввести в поиске "specification", все налегал на "reference" и "documentation".

vsb>Позиция разработчиков из MS: https://github.com/MicrosoftDocs/PowerShell-Docs/issues/4020


>> it was a significant amount of work and that the value provided to the community was comparably very low


Да хоть бы сделали, за столько-то лет, нормальную генерацию как HTML (с гиперссылками на терминах, идентификаторах и подобном) у себя на сайте, так и генерацию удобного для просмотра PDF из всего этого. А то где-то генерация PDF хоть и есть, но результат практически бесполезен, а где-то ее и вовсе нет.

vsb>Поколение зумеров хочет 5-минутные статейки


Типа, серьезные люди на таком не пишут? Я бы вот тоже не писал, будь у них более приличный скриптовый язык.
Re[2]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.11.20 11:42
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Его писали какие-то альтернативные люди.


Безусловно. До сих пор помню шок, испытанный при первом взгляде на PS-скрипт. В первый момент показалось, что текст хитрым образом обфусцирован или просто испорчен.

S>В общем, бегите, бегите из него.


Да я и не собираюсь писать на нем ничего серьезного. Большинство виндовых скриптов у меня написаны или непосредственно на родном cmd/bat, или на JS под интерпретатор JSDB. Хочу кое-что переделать на PS, но очень выборочно.
Re[5]: Где найти полную документацию на язык PowerShell?
От: CaptainFlint http://flint-inc.ru/
Дата: 03.11.20 12:19
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Насколько я знаю, для любого другого ЯП (по крайней мере, вышедшего за пределы экспериментального) существует официальная и полная спецификация, в виде хоть единого документа, хоть нескольких.


Эх, сразу видно, что ты на Руби не пытался писать.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[6]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 03.11.20 15:08
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Эх, сразу видно, что ты на Руби не пытался писать.


А можно мне и впредь не пытаться?
Re[7]: Где найти полную документацию на язык PowerShell?
От: CaptainFlint http://flint-inc.ru/
Дата: 03.11.20 16:06
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>А можно мне и впредь не пытаться?


Не мона, а нуна!
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Где найти полную документацию на язык PowerShell?
От: Skorodum Россия  
Дата: 04.11.20 12:11
Оценка:
Здравствуйте, Sinclair, Вы писали:

Это достойно КСВ!
Re[2]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 04.11.20 12:36
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я практически уверен, что одной ногой в этом стоял кто-то из аристократов команды Visual Basic.


И при этом он был засланным казачком от юниксоидов, ибо притащить в PowerShell столько от bash'а никто другой бы не смог.
Re[3]: Где найти полную документацию на язык PowerShell?
От: Skorodum Россия  
Дата: 12.11.20 09:48
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>И при этом он был засланным казачком от юниксоидов, ибо притащить в PowerShell столько от bash'а никто другой бы не смог.

А что там от bash?
Re[4]: Где найти полную документацию на язык PowerShell?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 12.11.20 11:52
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>А что там от bash?


Минимум половина синтаксиса, если не больше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.