首页 > 解决方案 > 计算虚拟桌面然后删除超过 2 个

问题描述

前言:我还没有接受过关于如何编码的正式培训。我有点喜欢它并通过powershell完成了一些简单的事情,比如注册表项。

我有一个我正在尝试运行的小脚本,它将测试我运行了多少个虚拟桌面(Get-DesktopCount)。我希望测试该返回,如果有 2 个或更多虚拟桌面,则执行语句的第二部分,即删除任何虚拟桌面,直到只剩下两个虚拟桌面(删除桌面)

$DTC = Get-DesktopCount

Do
   {
     Remove-Desktop -Desktop "Desktop 2"
   }
     Until (($DTC) -gt '2')

我知道这与语法有关,我无法区分不同 cmdlet 的不同类型的返回。

标签: powershellloopsdo-loopsuntil-loop

解决方案


我在这里看到三件事

第一个是当你这样做$DTC = Get-DesktopCount时,你会保存Get-DesktopCountas的结果$DTC。无论您创建或删除多少个桌面,其中存储的值$DTC都已设置,并且在您告诉它更改之前不会更新。

第二个是循环的条件似乎是倒退的——你可能想继续下去,Until那里的桌面少于While2 个(或者,还有更多)

最后,虽然我认为在这种情况下它不会造成任何伤害,但我认为你不想在Do这里使用 - 通过使用Do { ... } While ( ... )而不是While ( ... ) { ... }你最终运行块至少一次,即使条件为假(所以你至少关闭桌面 2 一次,即使桌面少于 2 个)

总而言之,我认为你想要的可能更接近

While ( (Get-DesktopCount) -gt 2 ) {
    Remove-Desktop -Desktop "Desktop 2"
}

推荐阅读