我有一个函数可以获取远程 Windows 服务的状态。2 个必需参数。第一个可以是字符串或哈希表,第二个始终是字符串(Windows 服务状态名称)。示例:
function Get-Service-Status([Parameter(ParameterSetName=‘string’, Position=0)][string] $groupString, [Parameter(ParameterSetName=‘hash’, Position=0)][string] $groupHash, [Parameter(ParameterSetName=‘string’, Position=1)][string] $status){
if($PSCmdlet.ParameterSet -eq ‘string’){
$myhash= Convert-To-Hash $groupString;
# function just returns @{“service”=“ABC”;”hostname”=“myhost”;};
}else{
$myhash= $groupHash;
}
…
}
# example usage:
Get-Service-Status “ABC” “Running”
$service=@{“service”=“ABC”;”hostname”=“myhost”;};
Get-Service-Status $service “Running”
然而,这似乎不起作用,它会在第 1 行第 1 个字符处抛出一个错误,无法找到接受参数“Running”的位置参数
我的目的是尝试制作一个多态函数,在传递不同参数类型的参数时可以使用相同的函数(其中类型将在函数内部解析,在这种情况下,如果给出了哈希表,则使用哈希表,如果给出了字符串,则转换为哈希表)