Неожиданное поведение с Group-Object с ScriptBlock - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь использовать Group-Object для группировки списка объектов на основе пользовательских вычислений.Очень упрощенным примером является следующий:

$groupedProjects = 1..10 | %{
    [PSCustomObject]@{
        ErrorMessage = if ($_ % 2) { 'SomeError' } else { '' } 
    }
} | Group-Object -Property { if ($_.ErrorMessage) { 'Failed' } else { 'Successful' } } -AsHashTable

$successGroup = $groupedProjects['Successful'] 
# $successGroup is null here instead of a list with the integers.

Проблема в том, что группы вводятся не по строке, а чем-то другим - не уверен, что я действительно понимаю проблему.

PS: Использование блока скрипта показано в документации следующим образом:

1..35 | Group-Object -Property {$_ % 2},{$_ % 3}

, поэтому я предполагаю, что идея верна - использование целых чисел вместо строк также работает как задумано.Если есть лучший способ сделать вышеупомянутое, я все уши.

1 Ответ

0 голосов
/ 24 мая 2018

Другие постеры верны, что проблема в том, что ключ хранится как PSObject, но для этого есть встроенное решение: используйте переключатель -AsString вместе с -AsHashTable.Это заставит ключ храниться в виде строки.

Я открыл проблему на GitHub для этой ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...