我最近注意到,在创建使用Windows Server 2008 R2上Add-WindowsFeature的ServerManager Module cmdlet的PowerShell脚本时,有一个水蓝色叠加层在整个脚本完成之前无法清除完了。例如,以下是使用Add-WindowsFeature Web-Server
命令安装IIS的脚本的屏幕截图:
收集数据...开始安装...重叠停留在控制台历史记录之上,直到整个脚本完成后才会消失。有没有办法让控制台重新绘制自己或禁用叠加?
答案 0 :(得分:3)
这只是服务器管理器cmdlet在内部调用Write-Progress的结果。如果你想让它保持沉默 - 只需将你的$ ProgressPreference改为'SilentlyContinue'。
您可以使用Write-Progress your self:
来模拟这一点for ($i = 0; $i -lt 100; $i++) {
Write-Progress -Activity "Counting: $i" -Status "$i" -PercentComplete $i
sleep 1
}
HTH 鲍尔泰克
答案 1 :(得分:0)
我发现了一种有趣的解决方法。在使用写入进程时,您可以简单地实现一个二级循环,它完全不做任何事情,但最后添加一个完成的开关。
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开关会使进度对话框重叠消失。不完全是一个简洁的解决方案,但仍然是我的需求的解决方案。