我正在编写一个脚本,我想吐出一堆记录,然后将计数显示为最后一行。这就是我到目前为止所做的:
Get-Whatever -Department $Deparment
Write-Host (Get-Whatever -Department $Deparment).Count " records found"
但我很好奇是否有办法不执行它两次。我以为我读过你可以在某处使用$$
,但这不起作用。有没有更好的方法来做到这一点,或者我只需要运行两次?
我想要的输出看起来像这样:
Name
-------
Abe
Joe
Bill
3 records found
答案 0 :(得分:6)
为什么不简单地将结果分配给变量?
$d = @(Get-Whatever -dep $department); $d
Write-Host $d.Count records found
请注意@(..)
。它确保即使Get-Whatever
没有返回任何内容,$d
也将为空数组。
其他方式是例如Tee-Object
。然而,它有点“神奇地”创建变量,因此它不像第一种方法那样可读:
Get-ChildItem | Tee-Object -var items
Write-Host $items.Count items found
至于Tee-Object
(来自文档,请尝试help tee-object -online
):
Tee-Object cmdlet发送输出 两个方向的命令(如 字母“T”)。它存储输出 在文件或变量中也发送 它顺着管道。如果Tee-Object是 管道中的最后一个命令, 命令输出显示在 控制台。
答案 1 :(得分:3)
这应该有效:
$Result = Get-Whatever -Department $Deparment
$Result; write-host "$($Result.count) records found"