2012-06-04 83 views
2

我最近注意到,在Windows Server 2008 R2上創建使用ServerManager ModuleAdd-WindowsFeature cmdlet的powershell腳本時,有一個水藍色覆蓋圖,直到整個腳本完成纔會清除完了。例如,下面是使用Add-WindowsFeature Web-Server命令來安裝IIS腳本的截圖:從Add-WindowsFeature cmdlet清除PowerShell覆蓋

Add-WindowsFeature Web-Server overlay

收集數據...開始安裝...疊加停留在控制檯歷史的頂部,並且不消失,直到整個腳本完成後。有沒有辦法讓控制檯重新繪製自己或禁用覆蓋?

回答

3

這只是由服務器管理器cmdlet在內部調用的Write-Progress的結果。如果你想讓它保持沉默 - 只需將你的$ ProgressPreference改爲'SilentlyContinue'。

您可以通過寫進度你的自我模仿這樣的:

for ($i = 0; $i -lt 100; $i++) { 
    Write-Progress -Activity "Counting: $i" -Status "$i" -PercentComplete $i 
    sleep 1 
} 

HTH 鮑爾泰克

+0

謝謝!我在這裏找到更多細節http://stackoverflow.com/questions/6651120/how-do-you-hide-a-powershell-progress-message和https://groups.google.com/group/microsoft.public。 windows.powershell/browse_thread /線程/ bc5c1d8368fd8bb2?pli = 1 –

+0

我仍然希望有一種方法來顯示進度,然後隱藏它。我試着用'Write-Progress -completed'命令來玩,但除了完全隱藏它之外我什麼都不能工作 –

0

我發現了一個有趣的方式來解決這個問題。在使用寫入過程中,您可以簡單地實現一個完全沒有任何作用的輔助循環,但在最後添加-completed開關。

for ($i = 1; $i -le 100; $i++) 
{write-progress -activity "Search in Progress" -status "$i% Complete:" -percentcomplete $i;} 

上面的代碼當然是你的功能循環,顯示進度和實際上做的事情。

for ($i = 1; $i -le 100; $i++) { 
write-progress -activity "Finishing" -status "$i% Complete:" -percentcomplete $i -Completed;} 

運行此確切代碼段不執行任何操作,並且因爲使用了-completed開關,所以進度對話框覆蓋圖消失。不完全是一個完美的解決方案,但仍然是我的需求的解決方案。