如何以格式列表的形式将对象打印到控制台,同时 return 将对象作为对象打印?

How do I print objects to the console in format-list, but also return the objects as objects?

我有一个 returns 自定义对象的 cmdlet。

我仍然想要 return 对象,但是当 运行 脚本时,我还想使用格式列表将这些对象输出到控制台——就像 write-host 写入控制台的方式一样,但它的输出不会被变量赋值消耗。

例如,我希望能够从控制台像这样使用它:

$ArrayOfObjects = $ArrayOfIPsOrWhatever | MyCoolCmdlet.ps1

这是用户在 运行 该命令

时在控制台中看到的内容
name: myobj1
prop1: sdfsdfsdf
prop2: sldkjfss

name: myobj2
prop1: swerwew
prop2: kopkpjojpoj

但他们也可以使用对象数组(如 $ArrayOfObject[1..2])

你可能不应该像那样强迫调用者输出;至少使用 Write-Verbose.

但实现它的方法是在您的 cmdlet 中使用 Write-HostWrite-Verbose return 编写对象到输出流。

要使用格式化输出,你可以做这个稍微复杂的事情:

$myObjects | Format-List | Out-String | Write-Verbose

您应该展示您的代码并解释它为何没有按照您的要求执行。