У меня есть командлет с именем 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
Любая идея ?
Get-Organization -Name <somename> | Get-Member
и(Get-Command Get-Department).ParameterSets
. - person user4003407   schedule 13.11.2016