【问题标题】:Clear PowerShell overlay from Add-WindowsFeature cmdlet从 Add-WindowsFeature cmdlet 清除 PowerShell 覆盖
【发布时间】:2013-01-17 02:28:36
【问题描述】:

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

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

【问题讨论】:

    标签: powershell powershell-2.0 powershell-cmdlet


    【解决方案1】:

    这只是服务器管理器 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 巴特克

    【讨论】:

    【解决方案2】:

    我找到了一个有趣的方法来解决这个问题。在使用 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;}
    

    运行这个不执行任何操作的确切 sn-p 并且因为您使用 -completed 开关使进度对话框覆盖消失。不完全是一个简洁的解决方案,但仍然可以满足我的需求。

    【讨论】:

      猜你喜欢
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多