我有一个功能
function Add-PromptSection() {
[CmdletBinding()]
Param(
[ConsoleColor]$Fore,
[ConsoleColor]$Back,
[Switch]$Newline,
[Scriptblock]$Condition,
[String]$String
)
$args = <something>
}
我想要做的是将函数参数收集到哈希表
中@{ Fore=$Fore; Back=$Back; Newline=$Newline;
Condition=$Condition; String=$String }
但是,如果用户在调用函数时省略了特定的参数,我希望从哈希表中省略该键。我们的想法是,在经过一些预处理后,我将使用哈希表调用Write-Host,如Write-Host @args
。所以我不想要$args["Back"] = $null
之类的内容。
显然,我可以通过明确检查每个参数来实现这一点(实际上,我可以吗?如何判断用户是否提供$ Fore?我想,检查$ null是否有效,但它是&#39;不是完全与Write-Host
相同的行为,但有更紧凑的方法吗?
答案 0 :(得分:2)
好像你想要的东西(至少哈希表)已经由$ PSBoundParameters为你完成了。
答案 1 :(得分:0)
如果我理解你的问题,你正在寻找你的论点的默认值。如果我错了,请纠正我。
function Add-PromptSection() {
[CmdletBinding()]
Param(
[ConsoleColor]$Fore,
[ConsoleColor]$Back="Red",
[Switch]$Newline,
[Scriptblock]$Condition,
[String]$String
)
Write-Host $args
}
现在,用户可以放心地忽略在哈希表中提供$ back。