我正在尝试创建一个函数,该函数具有字符串类型的参数(Para2),并分配了值(“ ABC”)。当仅调用参数时,应使用该值。如果参数附带值,则应改用该值。 但是我不知道该怎么办。我卡住了,请您帮忙。
我玩过AllowEmptyString和其他ValidationSets,但未成功。这是我到目前为止的内容:
Function MyFunction {
[CmdletBinding (
PositionalBinding = $false,
DefaultParameterSetName = "MySet1"
)]
Param (
[Parameter(ParameterSetName = "MySet1")]
[string]$Para1 = "Para1 default",
[Parameter(ParameterSetName = "MySet1")]
[string]$Para2 = "ABC"
)
Write-Output $Para2
}
MyFunction -Para2 "xxx"
调用“ MyFunction -Para2“ xxx”“之类的函数将重新运行“ xxx”-这是预期的。 我想找到一种方法来调用“ MyFunction -Para2”之类的函数,并希望将“ ABC”作为返回值。
有什么想法吗?
答案 0 :(得分:0)
您可以按照TheIncorrigle1的说明进行操作,但是如果输入变量可能为空,则还可以使用以下内容:
function MyFunction{
[CmdletBinding(
PositionalBinding = $false,
DefaultParameterSetName = "MySet1"
)]
param(
[Parameter(ParameterSetName = "MySet1")]
[string]$Para1 = "Para1 default",
[Parameter(ParameterSetName = "MySet1")]
[string]$Para2 = $para2
)
if(!$Para2){
Write-Output "ABC"
}else{
Write-Output $Para2
}
}
MyFunction -Para2 ""
这样,如果在-Para2之后放置了某些内容,则将成为输出,如果输入为空或$ null,则将输出“ ABC”。
我还对脚本进行了一些格式化,以使其更具可读性。 《 PowerShell脚本指南》提供了一些建议,可始终确保您的脚本具有可读性和可维护性。
希望这会有所帮助!
可能通过评论解决您的问题:
try{
MyFunction -Para2
}catch{
MyFunction -Para2 ""
}