Ошибка ValueFromPipelineByPropertyName в командлете модуля

У меня есть командлет с именем Get-Organization, который возвращает приведенный ниже тип возвращаемого значения.

public class OrgModel
{
    public string OrgName {get;set;}
}

[Cmdlet(VerbsCommon.Get, "Organization")]
[OutputType(typeof(OrgModel))]
 public GetOrganizationCmdlet : PSCmdlet
    {

        [Alias("OrgName")]
        [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, Position = 0, HelpMessage = "The orgname.")]
        string Name{get;set}

        ...
    }

У меня есть другой командлет Department, который возвращает модель DepartmentModel. Get-Department -OrgName <somename> возвращает все отделы внутри Orgname. Командлет определяется следующим образом.

[Cmdlet(VerbsCommon.Get, "Department")]
public GetDepartmentCmdlet : PSCmdlet
{
    [Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true, Position = 0, HelpMessage = "The org name.")]
        [ValidateNotNullOrEmpty]
        string OrgName {get;set}

    [Parameter(Mandatory = false, ValueFromPipelineByPropertyName = true, Position = 1, HelpMessage = "Optional. The department name.")]
        string Name{get;set}

    ...
}

После загрузки модуля все работает как положено. Место разрыва - трубопровод. Ниже возвращается ошибка

Get-Organization -Name <somename> | Get-Department

Как видите, для возвращаемого типа OrgModel определено свойство с именем OrgName, которое должно автоматически связываться с Get-Department параметром OrgName, но это не так, что дает следующую ошибку:

C:\WINDOWS\system32> Get-Organization -Name contoso | Get-Department
Get-Department : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.
At line:1 char:44
+ ... et-Organization -Name contoso | Get-Department
+                                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (OrgModel:PSObject) [Get-Department], ParameterBindingException
    + FullyQualifiedErrorId : InputObjectNotBound,GetDepartment

Любая идея ?


person Frank Q.    schedule 13.11.2016    source источник
comment
попробуйте изменить параметр имени GetOrganizationCmdlet на orgname?   -  person 4c74356b41    schedule 13.11.2016
comment
Показать вывод Get-Organization -Name <somename> | Get-Member и (Get-Command Get-Department).ParameterSets.   -  person user4003407    schedule 13.11.2016
comment
да, gm - логичный вопрос, но я предполагал, что этот человек уже сделал это   -  person 4c74356b41    schedule 13.11.2016


Ответы (1)


Используя команду, которую упомянул @PeterSerAl, я заметил, что время возврата было неправильно установлено для коллекции.

Работает после исправления.

Спасибо

person Frank Q.    schedule 13.11.2016