2

我最近注意到,在创建使用Windows Server 2008 R2 上的ServerManager 模块中的Add-WindowsFeature cmdlet 的powershell 脚本时,在整个脚本完成之前不会清除水蓝色覆盖层。例如,下面是使用命令安装 IIS 的脚本的屏幕截图:Add-WindowsFeature Web-Server

Add-WindowsFeature Web-Server 覆盖

正在收集数据... 开始安装... 覆盖始终位于控制台历史记录的顶部,并且在整个脚本完成之前不会消失。有没有办法让控制台重新绘制自己或禁用覆盖?

4

2 回答 2

3

这只是服务器管理器 cmdlet 内部调用的 Write-Progress 的结果。如果你想让它保持沉默 - 只需将你的 $ProgressPreference 更改为“SilentlyContinue”。

您可以通过自己使用 Write-Progress 来模拟这一点:

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

HTH 巴特克

于 2012-06-04T20:30:11.210 回答
0

我找到了一个有趣的方法来解决这个问题。在使用 write-progress 时,您可以简单地实现一个辅助循环,该循环除了在末尾添加一个 -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 开关使进度对话框覆盖消失。不完全是一个简洁的解决方案,但仍然可以满足我的需求。

于 2013-01-16T18:28:36.797 回答