我想为PowerShell snapin创建自己的cmdlet集合。遇到的问题是,我创建了自己的对象并在ProcessRecord方法中创建和填充它,但无法更改返回类型从而使我能够返回我创建的对象。
protected override void ProcessRecord()
{
ReportFileSettings rptFileSettings = new ReportFileSettings();
rptFileSettings.Enabled = string.Equals((reader.GetAttribute("Enabled").ToString().ToLower()), "yes");
rptFileSettings.FileLocation = reader.GetAttribute("FileLocation").ToString();
rptFileSettings.OverwriteExisting = string.Equals(reader.GetAttribute("OverwriteExistingFile").ToString().ToLower(), "yes");
rptFileSettings.NoOfDaysToKeep = int.Parse(reader.GetAttribute("NumberOfDaysToKeep").ToString());
rptFileSettings.ArchiveFileLocation = reader.GetAttribute("ArchiveFileLocation").ToString();
return rptFileSettings;
}
这是我的ProcessRecord方法,但由于它重写了来自PSCmdlet的方法,所以我无法更改返回类型为void。
有人能帮忙找出最好的方式来返回rptFileSettings对象,以便我可以在其他cmdlet中使用它的值吗?
ProcessRecord
方法中返回任何内容呢?它有一个非常特定的目的,在cmdlet处理生命周期中没有返回值的用途。 - famousgarkinCmdlet.WriteObject
方法来完成。在你的情况下,应该使用WriteObject(rptFileSettings);
。 - famousgarkin