首页 > 解决方案 > begin 块中的函数参数默认值

问题描述

我有以下代码:

Function test {
Param (
    [Parameter(Mandatory=$True, ValueFromPipeline=$True, ParameterSetName="p1", position=0)]
    [string]$sFile,
    [Parameter(Mandatory=$True, ValueFromPipeline=$True, ParameterSetName="p2", position=0)]
    [int]$iFile,
    [string]$Secret = "s3cr3t"
)
BEGIN {
    "[BEGIN]Secret=${Secret}"
}
PROCESS {
    "[PROCESS]Secret=${Secret}"
}
}

如果我执行:

"file.txt" | test

我得到:

[BEGIN]秘密=

[过程]秘密=s3cr3t

我的问题是,为什么开始块中的秘密是空的?

我正在尝试基于 Secret 在开始块中执行一些初始化操作,这种行为阻止了我。

请注意,当我在没有管道输入的情况下运行测试时,秘密也在 BEGIN 块初始化。最后我的powershell版本是2。

标签: powershellpowershell-2.0

解决方案


推荐阅读