我的Powershell功能有问题,
该函数应采用一个对象数组并将它们分成组。然后将这些组放入一个数组
这是函数。
function getRebootGroups(){ #Recieves allBrokerMachines result object
$RebootGroups = @()
for ($i = 0; $i -lt $args[0].count; $i += $maxConcurrentReboots) {
$RebootGroups += ,@($args[0][$i..($i+($maxConcurrentReboots-1))]);
}
if ($RebootGroups.Length -eq 1){
}
Out-File -InputObject (ConvertTo-Json $RebootGroups) -FilePath C:\Citrix \getRebootGroups.txt
$numberOfGroups = $RebootGroups.Length
Write-Debug -Message "getRebootGroups: $numberOfGroups"
return $RebootGroups
}
您可以看到我将数组导出到json文件,这样我就可以看到发生了什么。在此函数中,对象嵌套良好。我最终得到了预期的$ rebootgroups [index] [机器组]。
但是,如果只有一组,则调用函数会将此方法评估为getRebootGroups [机器组],这是意外的。 如果有多个组,则调用函数按预期将此方法评估为getRebootGroups [index] [机器组]。
就像电源壳一样,看到父对象为空并对其进行修剪
这是调用方法。
function testGetRebootGroups(){ #calculate reboot groups and check group size.
$allMachines = allBrokerMachines $CTXProdCatalogs
$result = getRebootGroups $allMachines
$expectedNumGroups = ($allMachines.Length / $maxConcurrentReboots)
Out-File -InputObject (ConvertTo-Json $result) -FilePath C:\Citrix\testGetRebootGroups.txt
$result.Length
$numgroups = $result.Length
if($result.Length -eq $expectedNumGroups){
return "Pass - $numgroups groups created. (Group Size = $maxConcurrentReboots)"
}else{
return "Fail - $numgroups groups created. $expectedNumGroups groups expected."
}
}
出于安全原因,我无法提供输入数据,但是输入数据可能只是一个数组,例如...
$inputData = @('PC1','PC2','PC3','PC4','PC5','PC6','PC7','PC8','PC9','PC10')
我真的很感谢有人可以提供的任何帮助