2014-02-27 39 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所需的內容。 :) –