有没有办法在下面使用哈希表或pscustomobject而不是switch block?哈希表似乎是简化函数的好方法。
function Get-Farm
{
[cmdletbinding()]
param (
[parameter (Mandatory = $true)]
[string]$farm)
Process{
switch($farm){
A {
$script:startHostID = 0
$script:endHostID = 0
}
B {
$script:startHostID = 1
$script:endHostID = 12
}
C {
$script:startHostID = 13
$script:endHostID = 24
}
BC {
$script:startHostID = 1
$script:endHostID = 24
}
ALL {
$script:startHostID = 1
$script:endHostID =48
}
}
}
答案 0 :(得分:1)
实际上,散列表查找是更好的选择
在Begin
块中创建查找表,并在Process
中使用它
另外,请在参数说明中使用ValueFromPipeline
,否则请勿使用Process
。
function Get-Farm
{
[cmdletbinding()]
param (
[parameter(Mandatory, ValueFromPipeline)]
[string]$farm
)
Begin {
$lookup = @{
A = 0,0
B = 1,12
C = 13,24
BC = 1,24
ALL = 1,48
}
}
Process {
if ($values = $lookup[$farm]) {
$script:startHostID = $values[0]
$script:endHostID = $values[1]
}
}
}
我已经使用if()
内的作业来压缩代码,但当然你可以单独编写代码:
$values = $lookup[$farm]
if ($values) {