gpt4 book ai didi

powershell - 管道循环到 out-gridview 并在每个循环上清除网格?

转载 作者:行者123 更新时间:2023-12-02 23:51:37 25 4
gpt4 key购买 nike

我只是想知道我是否可以像在控制台中那样在每个循环中清除 Out-Gridview:

while (1) { ps | select -first 5; sleep 1; clear-host }

不幸的是,这不会每次都清除 out-gridview:

 & { while (1) { ps | select -first 5; sleep 1; clear-host } } | out-gridview

最佳答案

Clear-Host清除主机的显示,这是控制台窗口在常规 PowerShell 控制台中的内容。

相比之下,Out-GridView是一个单独的 GUI 窗口,PowerShell 在其上显示后不提供任何编程显示。
值得注意的是,在显示初始数据后,您既不能清除也不能刷新窗口的内容。

此功能的最佳近似是关闭旧窗口并在每次迭代中打开一个包含新数据的新窗口 - 但请注意,这会破坏视觉效果。

在最简单的情况下,移动 Out-GridView进入循环并用 -Wait 调用它,这需要您在每次迭代中手动关闭它,但是:

# NOTE: Doesn't move to the next iteration until you manually close the window.
while (1) { ps | select -first 5 | Out-GridView -Wait }

This answer显示如何实现自动关闭 Out-GridView窗口,但这是一项非常重要的工作 - 并且 sleep 时间短至 1其次,它会破坏视觉效果。

最终,您正在寻找的是 Unix 的 GUI 版本 watch 实用程序(或者,更具体地说, top 实用程序)。

但是,由于您不希望与 Out-GridView 进行交互窗口,使用 Out-GridView 没有什么好处在这种情况下

相反,您可以生成一个使用 Clear-Host 的新控制台 窗口定期在同一屏幕位置显示输出:

下面定义了辅助函数Watch-Output 以促进:

# Simple helper function that opens a new console window and runs
# the given command periodically, clearing the screen beforehand every time.
function Watch-Output ([scriptblock] $ScriptBlock, [double] $timeout = 1) {
$watchCmd = @"
while (1) {
Clear-Host
& { $($ScriptBlock -replace '"', '\"') } | Out-Host
Start-Sleep $timeout
}
"@ #'
Start-Process powershell.exe "-command $watchCmd"
}

# Invoke with the command of interest and a timeout.
Watch-Output -ScriptBlock { ps | Select -First 5 } -Timeout 1

请注意,每次刷新窗口内容时,这仍然会闪烁。避免这种情况需要付出更多的努力。

PowerShellCookbook module提供精密的 Watch-Command cmdlet,它不仅可以避免闪烁,还可以提供额外的功能。
重要警告 是 - 从版本 1.3.6 开始- 该模块有几个与内置命令冲突的 cmdlet(Format-HexGet-ClipboardNew-SelfSignedCertificateSend-MailMessageSet-Clipboard),导入模块的唯一方法是允许模块的命令覆盖内置的(Import-Module PowerShellCookbook -AllowClobber)。

关于powershell - 管道循环到 out-gridview 并在每个循环上清除网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com