powershell cmdlet:表达式必须是可读的

时间:2013-04-02 22:38:36

标签: powershell cmdlets cmdlet

我的cmdlet正在尝试从管道中获取值,但在运行时,我收到错误消息:

无法处理管道输入,因为无法重试参数“Legalentity”的默认值。获得'Legalentity'的例外:表达必须是可读的 参数名称:表达式

我不知道是什么导致了这个错误。

感谢您的帮助!代码在下面..

[Cmdlet(VerbsCommon.Get, "Deals")]
public partial class GetDealCmdlet : InsightBaseCmdlet
{
    private List<Object> _legalentities = new List<Object>();
    [Parameter(Position = 0, Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true)]
    public List<Object> Legalentity { set { _legalentities = value; } } 


    protected override void ProcessRecord() {...}
}

和用法:

Search-Deals xxx | Get-Deals 

其中search-Deals为:

...

protected override void ProcessRecord() 
{
    foreach (PSObject in List<PSObject>)
    {
        ....
        writeObject(PSObject);
    }
}

1 个答案:

答案 0 :(得分:0)

确保您的Parameter同时包含getset之三应解决问题以及类似类型的任何"Expression must be writeable"错误。

public List<Object> Legalentity 
{ 
    set { _legalentities = value; } 
    get { return _legalentities; }
}