如何以格式列表的形式将对象打印到控制台,同时 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-Host
或 Write-Verbose
、 和 return 编写对象到输出流。
要使用格式化输出,你可以做这个稍微复杂的事情:
$myObjects | Format-List | Out-String | Write-Verbose
您应该展示您的代码并解释它为何没有按照您的要求执行。
我有一个 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-Host
或 Write-Verbose
、 和 return 编写对象到输出流。
要使用格式化输出,你可以做这个稍微复杂的事情:
$myObjects | Format-List | Out-String | Write-Verbose
您应该展示您的代码并解释它为何没有按照您的要求执行。