Аргументам, используемым функцией, можно присвоить имена, поместив оператор panam в качестве первого оператора в блоке операторов функции. При этом используется довольно непростой формат:
Panam ([[тип_объекта\$имя_аргумента [= значение_по_умолчанию[, …]) Оператор panam содержит перечень имен переменных, разделенных запятыми. Можно дополнительно поставить перед именем спецификацию типа тип_объ — екта] и дополнительно поставить знак = и значение, устанавливающее значение аргумента по умолчанию, если пользователь не укажет данный аргумент при вызове функции. Оператор panam копирует элементы из массива $angs в поименованные переменные, но все это происходит сложнее, чем кажется на первый взгляд. Можно также определить аргумент функции, не требующий значения, а просто имеющий значение Тnue, если он присутствовал в вызове функции, или False, если он не был указан. Для этого аргумента-переключателя в операторе panam используется следующий формат: [switch] $имя_аргумента. Рассмотрим пример функции, принимающей два аргумента — целое число и необязательный ключ — venbose — и третий аргумент неуказанного типа: function pnintmsg { что более похоже на определение функции в других языках. Если этот формат для вас удобнее, пользуйтесь им постоянно! В любом случае, эта функция выводит аргумент message, если значение level больше чем или равно значений переменной $cunnent_output_level. Если пользователь не укажет аргумент level, его значением будет считаться 1. Возвращаемого значения данная функция не имеет.
Необычным свойством PowerShell является то, что при вызове функции можно указать аргументы позиционно: При вызове функции PowerShell сначала пытается присвоить поименованным аргументам функции аргументы типа -имя значение и поименованные — switch — аргументы, затем всем остальным аргументам присваивается все, что осталось в командной строке. (Аргумент-переключатель никогда не обозначается позиционно, поэтому во всех предыдущих примерах значение $verbose равно False.) Если вызвать функцию с именами аргументов, которые не определены в операторе param, эти аргументы будут проигнорированы. Они все же появятся наряду со всеми остальными аргументами в массиве $args, но никакого сообщения об ошибке выведено не будет. Например, аргумент — unknown в предыдущей функции не вызовет никакой реакции.