powershell - 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。
解决方案
推荐阅读
- terminal - Grep - 在递归搜索中显示当前目录/文件
- c# - 模型绑定产生一个空列表
- postgresql - postgresql 从非递归术语转换数组类型
- bootbox - 如何在引导箱中手动给出垂直高度
- python - super() 方法只初始化一些参数
- git - 将项目文件夹导入 gitbucket
- javascript - 如何在我自己的按钮中触发 mxGraph 放大和缩小功能?
- elasticsearch - 使用 Persistent Volume 在 Kubernetes 上部署 Elasticsearch
- php - 密码哈希返回密码不匹配
- angular - 如何在 Angular 4 中更改 Bootstrap 模态内容的背景颜色