PowerShell 技能连载 - 在 PowerShell ISE 中使用“more”

适用于 PowerShell ISE

在 PowerShell 控制台中,您可以将命令通过管道输出到旧式的“more.com”命令中,或者更高级一些的 Out-Host -Paging 中。这将分页显示数据,每按一个键翻一页:

PS> Get-Process | more
PS> Get-Process | Out-Host -Paging

在 PowerShell ISE 中,这些都不支持。这是因为 ISE 没有控制台,所以没有“可见的行数”概念,只有一个无限的文本缓冲区。

要避免大量的结果刷屏问题,只需要自己创建一个兼容 ISE 的“more”命令:

function Out-More
{
    param
    (
        $Lines = 10,

        [Parameter(ValueFromPipeline=$true)]
        $InputObject
    )

    begin
    {
        $counter = 0
    }

    process
    {
        $counter++
        if ($counter -ge $Lines)
        {
            $counter = 0
            Write-Host 'Press ENTER to continue' -ForegroundColor Yellow
            Read-Host
        }
        $InputObject
    }
}

将您的结果通过管道输出到 Out-More,命令,并使用 -Lines 来指定接收到多少行以后暂停:

PS> Get-Process | Out-More -Lines 4

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    100       9     1436       1592    51            6896 adb
    307      42    22332      12940   123            1424 AllShareFrameworkDMS
     42       4     1396       1284    19            1404 AllShareFrameworkManagerDMS
Press ENTER to continue


     81       7     1004        724    43            1388 armsvc
    202      25    50376      55320   234     8,06  13720 chrome
   1131      65    68672      93892   361   116,73  13964 chrome
    199      24    53008      52700   225     5,56  14768 chrome
Press ENTER to continue


    248      26    31348      44984   239    44,31  15404 chrome
    173      20    23756      25540   179     1,27  16492 chrome
    190      22    36316      39208   207     2,81  16508 chrome
    184      23    41800      44212   223     1,77  17244 chrome
Press ENTER to continue

PowerShell 技能连载 - 在 PowerShell ISE 中使用“more”

http://blog.vichamp.com/2015/03/23/using-more-in-the-powershell-ise/

作者

吴波

发布于

2015-03-23

更新于

2022-07-06

许可协议

评论