Возможно ли иметь вложенную функцию внутри функции, содержащей блоки begin / process / end?Первая ошибка:
begin : The term 'begin' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if
a path was included, verify that the path is correct and try again.
At C:\src\cut\f1.ps1:13 char:5
+ begin { Write-Verbose "initialize stuff" }
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (begin:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Вот код, о котором идет речь.
function f1 (
[Parameter(Mandatory=$false, ValueFromPipeline=$true)]
[array]$Content
,[Parameter(Mandatory=$false, ValueFromPipeline=$false, Position=0)]
[string[]]$Path
)
{
function a([Parameter(Mandatory=$true)][string]$s)
{
"=== a === $s"
}
begin { Write-Verbose "initialize stuff" }
process {
Write-Verbose "process stuff"
a($Content)
}
end { Write-Verbose "end stuff" }
}
Get-Content -Path 'C:\src\cut\cut-man.txt' | f1 -Path '.\cut-man.txt'
Функция может иметь дюжину или более параметров.Если я не могу вложить функцию, мне нужно будет создать другую функцию и продублировать передачу параметров или использовать глобальные переменные.Я не хочу использовать глобальные переменные, если это возможно.Как это можно сделать?