可以获取PowerShell中执行的最后一个命令的计数吗?

时间:2011-05-19 17:30:49

标签: powershell

我正在编写一个脚本,我想吐出一堆记录,然后将计数显示为最后一行。这就是我到目前为止所做的:

Get-Whatever -Department $Deparment
Write-Host (Get-Whatever -Department $Deparment).Count " records found"

但我很好奇是否有办法不执行它两次。我以为我读过你可以在某处使用$$,但这不起作用。有没有更好的方法来做到这一点,或者我只需要运行两次?

我想要的输出看起来像这样:

Name
-------
Abe
Joe
Bill

3 records found

2 个答案:

答案 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"