que es aceptable para dar salida a cualquier tipo de objeto se utiliza para representar mejor lo que estás escribiendo - un conjunto de datos es absolutamente bien. La única advertencia posible es que v2 de PowerShell puede encontrarse ejecutando en una versión reducida de .NET Framework (como en Server Core), por lo que si ese es un posible escenario para sus cmdlets, debe tener precaución para asegurarse de que el El objeto que está produciendo existe en cada sistema en el que se podría usar su cmdlet.
Dicho todo esto, la tubería funciona mejor cuando contiene colecciones de objetos; un DataSet no es una colección per se. En otras palabras, desea que los cmdlets en sentido descendente puedan recibir un objeto a la vez a través de la canalización, de modo que esos cmdlets no tengan que enumerarse manualmente a través de un objeto. No sé mucho sobre lo que está haciendo exactamente, bien podría ser que un DataSet sea totalmente apropiado, pero generalmente preferiría ver un bucle de cmdlet a través del DataSet internamente, crear sus propios objetos personalizados (para que cada columna en la tabla se convierte en una propiedad), y la salida de esos objetos a la tubería. Eso simplemente aumenta la cantidad de cmdlets en sentido descendente que pueden consumir lo que está generando.
Una prueba simple es canalizar la salida de su cmdlet a Export-CSV. Si funciona (y probablemente no lo haría con un DataSet), entonces está haciendo lo correcto generalmente. Ahora bien, es posible que necesite crear un cmdlet que emita un DataSet y solo tiene la intención de para otros cmdlets que haya escrito (que consuman DataSets) para operar con ese resultado. Nada de malo con eso. Sin embargo, la flexibilidad máxima es solo objetos, ya que permite que todos los cmdlets del núcleo de PowerShell trabajen en su salida.
Espero que ayude.