Функция Powershell возвращает объект в возвращаемое значение - PullRequest
0 голосов
/ 28 мая 2019

У меня проблема с функцией 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] [группа машин], как и ожидалось.

его оболочка power power видит, что родительский объект пуст, и обрезает его

вот метод вызова.

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

Я был бы очень признателен за любую помощь, которую кто-то может предложить

...