前言:我还没有接受过如何编码的正式培训。我给它加上了翅膀,做了一些简单的事情,比如通过powershell登录。
我有一个正在尝试运行的小脚本,它将测试我运行了多少个虚拟桌面()。我希望对返回的结果进行测试,如果有2台或更多的虚拟桌面,那么执行语句的第二部分,即删除任何虚拟桌面,直到只剩下两台虚拟桌面(删除-桌面)
$DTC = Get-DesktopCount
Do
{
Remove-Desktop -Desktop "Desktop 2"
}
Until (($DTC) -gt '2')我知道这与语法和我无法区分不同cmdlet的不同类型的回报有关。
发布于 2021-10-06 21:52:02
我在这里看到了三件事
首先,当您执行$DTC = Get-DesktopCount时,您要将Get-DesktopCount的结果保存为$DTC。不管您创建或删除了多少台台式机,存储在$DTC中的值已经被设置,并且在您告诉它更改之前不会更新。
第二种情况是循环的条件似乎是向后的--您可能想继续运行Until --只有不到2台台式机(或者,While有更多)
最后,虽然在本例中我不认为它有任何坏处,但我认为您不想在这里使用Do --通过使用Do { ... } While ( ... )而不是While ( ... ) { ... },您至少运行了一次块,即使条件是错误的(因此您至少关闭了一次桌面2,即使只有不到2台桌面)
总之,我认为你想要的可能是
While ( (Get-DesktopCount) -gt 2 ) {
Remove-Desktop -Desktop "Desktop 2"
}https://stackoverflow.com/questions/69472714
复制相似问题