1 (изменено: alexii, 2012-06-19 19:40:25)

Тема: PowerShell: Учусь искать информацию по языку правильно

Всем здравствуйте! Буду краток и перейду сразу к делу. Проблема в том, что начав вникать в особенности языка заметил, что некоторые функции (методы) не удается отыскать в справке PS. В частности, сейчас мне необходимо усвоить правила и возможности оператора?! foreach. В книге Keith Hill "Эффективное Программирование в PowerShell" без прелюдий приводится один из вариантов использования:

get-command more.com | foreach {$_.FileVersionInfo}

В оболочке есть описание только для Foreach-Object. На TechNet нашел описание на английском, но отсутствовало описание функции FileVersionInfo. То есть, если бы я не наткнулся на пример из книги, то в общем и не догадывался о ее существовании.
Объясните пожалуйста порядок поиска по источникам информации, чтобы понять истинные возможности языка.

2

Re: PowerShell: Учусь искать информацию по языку правильно

Farxat пишет:

В оболочке есть описание только для Foreach-Object.

1.

Get-Help foreach

2.

Get-Command foreach
CommandType     Name                                                         Definition                                                  
-----------     ----                                                         ----------                                                  
Alias           foreach                                                      ForEach-Object

Не путать с командой:

foreach ($<item> in $<collection>){<statement list>}

описание которой так же есть в справке PowerShell.

Впрочем, они тесно связаны:


The Foreach Statement Inside a Command Pipeline

When Foreach appears in a command pipeline, Windows PowerShell uses the foreach alias, which calls the ForEach-Object command. When you use the foreach alias in a command pipeline, you do not include the ($<item> in $<collection>) syntax as you do with the Foreach statement. This is because the prior command in the pipeline provides this information. The syntax of the foreach alias when used in a command pipeline is as follows:

<command> | foreach {<command_block>}

3

Re: PowerShell: Учусь искать информацию по языку правильно

Спасибо за развернутый ответ! То есть использование этих схожих по названию команд зависит от синтаксиса (то, какие параметры указаны за командлетом)

4

Re: PowerShell: Учусь искать информацию по языку правильно

Farxat пишет:

…но отсутствовало описание функции FileVersionInfo.

ApplicationInfo Class (System.Management.Automation)

5

Re: PowerShell: Учусь искать информацию по языку правильно

Farxat пишет:

То есть использование этих схожих по названию команд зависит от синтаксиса…

Я сам пока учусь PowerShell'у. Но, сдаётся мне — именно так.

Farxat пишет:

… (то, какие параметры указаны за командлетом)

«foreach», в том виде, какой приведён в первом посте — это всё-таки оператор, «statement». Но, как указано в документации, которую я цитировал выше, в данном случае сама оболочка PowerShell при исполнении заменяет statement «foreach» на commandlet «ForEach-Object».

6

Re: PowerShell: Учусь искать информацию по языку правильно

К этому языку нужно привыкнуть. Спасибо за столь четкие и развернутые ответы!

7

Re: PowerShell: Учусь искать информацию по языку правильно

Угу. Я уже лет пять привыкаю-привыкаю… Но как-то не особо манится . Хотя и понимаю, что иного всё одно не дано.

8 (изменено: Farxat, 2012-06-19 21:54:56)

Re: PowerShell: Учусь искать информацию по языку правильно

Хотел еще прояснить момент, когда смотришь синтаксис командлета, то приводится два варианта, с незначительными различиями в командах. Правильно ли я понимаю, что это написание для 1-ой и 2-ой версий языка?

9

Re: PowerShell: Учусь искать информацию по языку правильно

Farxat пишет:

…когда смотришь синтаксис командлета, то приводится два варианта, с незначительными различиями в командах.

Приведите пример.

10

Re: PowerShell: Учусь искать информацию по языку правильно

Кину ссылку на описание команд на русском языке. Эксклюзив между прочим)) На самом сайте мелкомягких я до этого раздела дойти не смог, не понимаю как туда добраться. Удалось найти его только через google.

Clear-Content

Там есть такой момент:

Clear-Content [-LiteralPath] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Clear-Content [-Path] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

11

Re: PowerShell: Учусь искать информацию по языку правильно

Спасибо, ясно.

Нет, это просто две формы одного и того же командлета. Обе они относятся (в данном случае) к версии 2.0.

Кину ссылку на описание команд на русском языке. Эксклюзив между прочим)) На самом сайте мелкомягких я до этого раздела дойти не смог, не понимаю как туда добраться. Удалось найти его только через google.

PowerShell документация site:microsoft.com - Поиск в Google, пятая ссылка. Если использовать в запросе не «Документация», а «Справка», то к правильной ссылке: Windows PowerShell придём несколько быстрее. Кстати, принято ссылки оформлять тэгом «url», а код — тэгом «code». Я поправил Ваш пост.

12

Re: PowerShell: Учусь искать информацию по языку правильно

alexii пишет:

...Если использовать в запросе не «Документация», а «Справка», то к правильной ссылке: Windows PowerShell придём несколько быстрее. Кстати, принято ссылки оформлять тэгом «url», а код — тэгом «code». Я поправил Ваш пост.

Так новенький еще) С этим проблем больше не будет.