Каков рекомендуемый стиль кодирования для PowerShell?

Есть ли рекомендуемый стиль кодирования, как писать сценарии PowerShell?

Этоне о том, как структурировать код (сколько функций, если использовать модуль, ...). Это о 'как написать код, чтобы он был читабельным».

В языках программирования есть некоторыерекомендуемые стили кодирования (чтоотступ, как сделать отступ - пробелы / табуляция, где сделатьновая линиягде поставитьфигурные скобки...), но я не видел никаких предложений для PowerShell.

Я особенно заинтересован в:

Как записать параметры

function New-XYZItem
  ( [string] $ItemName
  , [scriptblock] $definition
  ) { ...

(Я вижу, что это больше похоже на синтаксис 'V1')

или же

function New-PSClass  {
  param([string] $ClassName
       ,[scriptblock] $definition
  )...

или (зачем добавлять пустой атрибут?)

function New-PSClass  {
  param([Parameter()][string] $ClassName
       ,[Parameter()][scriptblock] $definition
  )...

или (другое форматирование, которое я видел, возможно, в коде Jaykul)

function New-PSClass {
  param(
        [Parameter()]
        [string]
        $ClassName
        ,
        [Parameter()]
        [scriptblock]
        $definition
  )...

или же ...?

Как написать сложный конвейер

Get-SomeData -param1 abc -param2 xyz | % {
    $temp1 = $_
    1..100 | % {
      Process-somehow $temp1 $_
    }
  } | % {
    Process-Again $_
  } |
  Sort-Object -desc

или (имя командлета в новой строке)

Get-SomeData -param1 abc -param2 xyz |
  % {
    $temp1 = $_
    1..100 |
      % {
        Process-somehow $temp1 $_
      }
  } |
  % {
    Process-Again $_
  } |
  Sort-Object -desc |

А что, если есть-begin, -process, а также-end параметры? Как сделать его максимально читабельным?

Get-SomeData -param1 abc -param2 xyz |
  % -begin {
     init
  } -process {
     Process-somehow2 ...
  } -end {
     Process-somehow3 ...
  } |
  % -begin {
  } ....

или же

Get-SomeData -param1 abc -param2 xyz |
  %  `
    -begin {
      init
    } `
    -process {
      Process-somehow2 ...
    } `
    -end {
      Process-somehow3 ...
    } |
  % -begin {
  } ....

Здесь важен отступ и то, какой элемент помещен на новую строку.

Я освещал только вопросы, которые приходят мне в голову очень часто. Есть и другие, но я бы хотел, чтобы этот вопрос переполнения стека был «коротким».

Любые другие предложения приветствуются.