【问题标题】:Possible to get the count for the last command executed in PowerShell?可以获取在 PowerShell 中执行的最后一个命令的计数吗?
【发布时间】:2011-05-19 17:30:49
【问题描述】:

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

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

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

我想要的输出如下所示:

Name
-------
Abe
Joe
Bill

3 records found

【问题讨论】:

    标签: powershell


    【解决方案1】:

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

    $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 是 管道中的最后一个命令, 命令输出显示在 控制台。

    【讨论】:

    • 完美!这会执行两次命令还是 PowerShell 足够智能以重用结果?
    • 用文档段落编辑了答案。 PowerShell 足够聪明,只需执行一次。
    【解决方案2】:

    这应该可行:

    $Result = Get-Whatever -Department $Deparment
    $Result; write-host "$($Result.count) records found"
    

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 2011-07-25
      • 1970-01-01
      • 2011-03-31
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      相关资源
      最近更新 更多