输出最适合用来表示您正在写的内容的任何类型的对象都是可以接受的——DataSet 绝对没问题。唯一可能需要注意的是,PowerShell v2 可能会发现自己运行在 .NET Framework 的简化版本上(例如在 Server Core 上),因此如果您的 cmdlet 可能出现这种情况,您需要谨慎以确保您输出的对象存在于可能使用您的 cmdlet 的每个系统上。
话虽如此,管道在包含对象集合时效果最佳;DataSet 本身不是一个集合。换句话说,您希望下游 cmdlet 能够通过管道一次接收一个对象,这样这些 cmdlet 就不必手动枚举对象。我不太了解您在做什么-很可能是 DataSet 是完全合适的-但我通常更喜欢在内部查看通过 DataSet 的 cmdlet 循环,创建自己的自定义对象(这样表中的每一列都成为一个属性),并将这些对象输出到管道。这只会增加下游 cmdlet 的数量,这些 cmdlet 可以消耗您所发布的内容。
一个简单的测试是将 cmdlet 的输出通过管道传输到 Export-CSV。如果它有效(并且它可能不会与 DataSet 一起使用),那么您通常是在做正确的事情。现在,您可能需要创建一个输出 DataSet 的 cmdlet,并且您只打算让您编写的某些其他 cmdlet(使用 DataSet)来针对该输出进行操作。没有错。但是,最大的灵活性是单个对象,因为它使 PowerShell 的所有核心 cmdlet 都可以处理您的输出。
希望有帮助。