gpt4 book ai didi

powershell - 获取传递给PowerShell中函数的所有参数

转载 作者:行者123 更新时间:2023-12-03 23:23:29 24 4
gpt4 key购买 nike

我有以下功能。它根据传递的参数生成一个字符串。

function createSentenceAccordingly {
Param([Parameter(mandatory = $false)] [String] $name,
[Parameter(mandatory = $false)] [String] $address,
[Parameter(mandatory = $false)] [String] $zipcode,
[Parameter(mandatory = $false)] [String] $city,
[Parameter(mandatory = $false)] [String] $state)

$stringRequired = "Hi,"

if($name){
$stringRequired += "$name, "
}
if($address){
$stringRequired += "You live at $address, "
}
if($zipcode){
$stringRequired += "in the zipcode:$zipcode, "
}
if($name){
$stringRequired += "in the city:$city, "
}
if($name){
$stringRequired += "in the state: $state."
}

return $stringRequired
}

所以,基本上这个函数会根据传递的参数返回一些东西。我想尽可能避免 if 循环并一次访问所有参数。

我可以访问数组或 HashMap 中的所有参数吗?因为我应该使用命名参数,所以这里不能使用 $args。如果我可以一次访问所有参数(可能在像 $args 或 hashamp 这样的数组中),我的计划是使用它来动态创建返回字符串。

以后,函数的参数会增加很多,我不想继续为每个额外的参数编写if循环。

提前谢谢,:)

最佳答案

$PSBoundParameters variable是一个哈希表,只包含显式传递给函数的参数。

你想要的更好的方法可能是使用 parameter sets这样您就可以命名特定的参数组合(不要忘记在这些集合中强制使用适当的参数)。

然后你可以这样做:

switch ($PsCmdlet.ParameterSetName) {
'NameOnly' {
# Do Stuff
}
'NameAndZip' {
# Do Stuff
}
# etc.
}

关于powershell - 获取传递给PowerShell中函数的所有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29831399/

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