PS中许多命令的输出被突然转移到显示器上,我甚至不记得我键入的命令。我必须向上滚动几页才能看到。
是否可以减慢输出流的速度,以便我们可以在屏幕上经过它时读取它? ..即使这是一个错误,如果它是一个文明和可读的流,如C-SPAN上的隐藏字幕,我们可以更好地理解即使看似无聊的消息......
“更多”有效,但它一次只是整页。
我也在techrepublic找到了这个:
function EasyView { process { $_; Start-Sleep -seconds .5}}
Get-ChildItem C: | EasyView
很酷,但一次输出1条完整记录..
我正在寻找流式传输,例如每0.5秒一个字母。就像在黑客帝国中一样,或者更好地喜欢与马修布罗德里克的战争游戏......
有什么想法吗?
答案 0 :(得分:1)
绝不是完美的,但我只是在这里玩,试图安抚你的奇怪但好奇的我需要
function get-easyview{
param([int]$Milliseconds= 50)
$text = $input | Out-String
[char[]]$text | ForEach-Object{
Write-Host -NoNewline $_
# Only break for a non-whitespace character.
if($_ -notmatch "\s"){Sleep -Milliseconds $Milliseconds}
}
}
Get-ChildItem | get-easyview -Milliseconds 50
这将获取输入对象并将其转换为单个字符串,然后将其作为char
数组。然后它会痛苦地一次显示一个字符,字符之间的间隔为X毫秒。我想用秒钟拍摄自己的脸。我听到一个打字机在脑海里看着这个。 注意:这只输出到主机控制台而不是标准输出流。这必须是最后一个管道命令。这没有可用的-passthru
。
找不到引用但PowerShell只能这么慢。我不认为我可以在1-20毫秒之间获得睡眠,并且有明显的差异。我的数字可能不对,但这是件事。
输出不是完全,因为它在屏幕上。我正在研究它。
不要忘记More
或PowerShell等效out-host -paging
。使用输入,您可以“吸收”#34;信息按您自己的节奏。从this answer
Get-EasyView 2.0
我正在玩更多游戏,但是我想设置一个开关,这样你就可以使用一些简单的参数来按字符或直线进行。
function get-easyview{
param(
[int]$Milliseconds= 50,
[ValidateSet("Line","Character")]
[String]
$Pace = "Character"
)
If($pace -eq "Character"){
$text = [char[]]($input | Out-String)
$parameters = @{NoNewline = $true}
} Else {
$text = ($input | out-string) -split "`r`n"
$parameters = @{NoNewline = $false}
}
$text | ForEach-Object{
Write-Host $_ @parameters
if($_ -notmatch "^\s+$"){Sleep -Milliseconds $Milliseconds}
}
}
所以现在你可以做这样的电话
Get-ChildItem | get-easyview -Milliseconds 50
Get-ChildItem | get-easyview -Milliseconds 1000 -Pace Line
Get-ChildItem | get-easyview -Milliseconds 50 -Pace Character