gpt4 book ai didi

Powershell - 多个参数 - 条件

转载 作者:行者123 更新时间:2023-12-02 02:07:30 25 4
gpt4 key购买 nike

我想在 powershell 中创建一个脚本,它根据设置或未设置的参数执行几项操作。我的代码如下所示:

Param(
[parameter(Mandatory=$true,Position=1)]
[String]$var1 ,
[parameter(Mandatory=$false,Position=2)]
[int]$var2 ,
[parameter(Mandatory=$false,Position=3)]
[int]$var3 ,
[parameter(Mandatory=$false,Position=4)]
[string]$var4
)
....

然后我想做一个 if-elseif 来检查设置了哪些参数:

if (!$var2 -and !$var3 -and !$var4) {
... Do something with $var1
} elseif (!$var2 -and !$var3 -and $var4) {
... Do something with $var1 and $var4
} else {
throw an error
}

..或者如果更合适的话做一个开关盒。我无法决定是不是。谁能想出一个小例子来做到这一点?提前致谢。感谢您花时间帮助我。

最佳答案

您正在寻找 $PSBoundParameters 自动变量 - 它是一个特殊的字典/哈希表,其中包含调用者传递给函数的参数值:

if(!$PSBoundParameters.ContainsKey('var2') -and !$PSBoundParameters.ContainsKey('var3') -and !$PSBoundParameters.ContainsKey('var4')){
# only $var1 has an argument value
}

$PSBoundParameters 作为哈希表的好处是,如果您想将可选参数传递给另一个函数,您只需 splat it :

function Write-CustomHost {
param(
[Parameter(Mandatory = $true)]
$Object,

[Parameter(Mandatory = $false)]
[ValidateSet('Red','Green')]
[string]$ForegroundColor
)

Write-Host @PSBoundParameters
}

关于Powershell - 多个参数 - 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68210680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com