Powershell函数取消嵌套返回值中的对象

时间:2019-05-27 23:05:34

标签: powershell powershell-v2.0 powershell-v3.0

我的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')

我真的很感谢有人可以提供的任何帮助

0 个答案:

没有答案