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

Abe*_*ler 5 powershell

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

Get-Whatever -Department $Deparment
Write-Host (Get-Whatever -Department $Deparment).Count " records found"
Run Code Online (Sandbox Code Playgroud)

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

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

Name
-------
Abe
Joe
Bill

3 records found
Run Code Online (Sandbox Code Playgroud)

ste*_*tej 6

为什么不简单地将结果分配给变量?

$d = @(Get-Whatever -dep $department); $d
Write-Host $d.Count records found
Run Code Online (Sandbox Code Playgroud)

请注意@(..).它确保即使Get-Whatever不返回任何内容,$d也会是空数组.

其他方式是例如Tee-Object.但是,它有点"神奇地"创建变量,因此它不像第一种方法那样可读:

Get-ChildItem | Tee-Object -var items
Write-Host $items.Count items found
Run Code Online (Sandbox Code Playgroud)

至于Tee-Object(来自文档,请尝试help tee-object -online):

Tee-Object cmdlet在两个方向(如字母"T")发送命令的输出.它将输出存储在文件或变量中,并将其发送到管道.如果Tee-Object是管道中的最后一个命令,则命令输出将显示在控制台中.