如何使用函数返回
函数返回未被其他东西捕获的所有内容。
如果你使用 return 关键字,返回行之后的每个语句都不会被执行!
像这样:
Function Test-Function
{
Param
(
[switch]$ExceptionalReturn
)
"Start"
if($ExceptionalReturn){Return "Damn, it didn't work!"}
New-ItemProperty -Path "HKCU:\" -Name "test" -Value "TestValue" -Type "String"
Return "Yes, it worked!"
}
测试功能
将返回:
- 开始
- 新创建的注册表项(这是因为有一些语句可以创建你可能不期望的输出)
- 是的,它奏效了!
Test-Function -ExceptionalReturn 将返回:
- 开始
- 该死的,它没用!
如果你这样做:
Function Test-Function
{
Param
(
[switch]$ExceptionalReturn
)
. {
"Start"
if($ExceptionalReturn)
{
$Return = "Damn, it didn't work!"
Return
}
New-ItemProperty -Path "HKCU:\" -Name "test" -Value "TestValue" -Type "String"
$Return = "Yes, it worked!"
Return
} | Out-Null
Return $Return
}
测试功能
将返回:
- 是的,它奏效了!
Test-Function -ExceptionalReturn 将返回:
- 该死的,它没用!
有了这个技巧,你可以控制返回的输出,即使你不确定每个语句将吐出什么。
它的工作原理如下
.{<Statements>} | Out-Null
这个。使得以下
脚本块包含在代码中{}标记脚本块
| Out-Null 将任何意外输出传递给 Out-Null(因此它已经消失了!)
因为包含了 scriptblock,所以它与函数的其余部分具有相同的范围。
因此,你可以访问在 scriptblock 中创建的变量。