2014-02-27 36 views
0

我试图让由PowerShell(v3.0)创建的GridView以定时方式自动刷新。让我们举一个简单的例子:PowerShell 3.0中的自动刷新Out-GridView

Get-Process | Out-GridView 

这显示了我所有正在运行的进程的漂亮形式。我怎样才能让这个表单自动刷新60秒?作为奖励,表单是否可以刷新并保留之前选择的排序栏/顺序?

回答

2

Out-GridView不支持自动刷新。 Out-GridViewGet-Process(在此代码中只调用一次)的结果显示在gridview中。

要获得自动刷新,您需要使用自定义更新逻辑在计时器上创建自定义窗体,或者创建一个闭合gridview并在x秒后重新打开的循环。就像这样:

test.ps1

param(
[int]$waitseconds = 60 
) 

while($true) { 
    Start-Process -FilePath powershell.exe -ArgumentList "-WindowStyle Hidden -Command &{ Get-Process | out-gridview; sleep $waitseconds; exit }" -Wait 
} 

用法:

test.ps1 

test2.ps1 -waitseconds 5 

要知道,每一次刷新它在GridView将重点放在屏幕(出现在上面)。

要获得您想要的所有功能,您需要创建自己的表单。

+0

我希望PowerShell有更优雅的东西。这种方法会导致每个GridView窗口在屏幕上跳转,但是您确实回答了我用工作方法提出的问题,我非常感谢您的回复。 – bigmac

+0

PowerShell有更优雅的东西。它具有.Net框架,因此您可以创建适合您需求的自定义表单和逻辑。但是,Microsoft无法为每种可能的情况创建一个cmdlet。如果您四处搜索,则某人可能已创建了模块中脚本或cmdlet所需的内容。 :) –