代码卡在while循环中,未在powershell中退出

代码卡在while循环中,未在powershell中退出,powershell,powershell-3.0,powershell-ise,Powershell,Powershell 3.0,Powershell Ise,我在使用powershell时遇到了一个奇怪的问题。当我运行while循环检查VM工具的状态时,它只会卡在内部。代码如下: Connect-VIServer $vmserver -User $vmuser -Password $vmpass $status1 = (Get-VM -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus Write-Host $status1 while(!($status1 -eq 'toolsOK'))

我在使用powershell时遇到了一个奇怪的问题。当我运行while循环检查VM工具的状态时,它只会卡在内部。代码如下:

Connect-VIServer $vmserver -User $vmuser -Password $vmpass
$status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus 
Write-Host $status1

while(!($status1 -eq 'toolsOK')){
Write-Host "tool status is:" $status1
Start-Sleep -Seconds 5
}

Write-Host "success"

我在该机器关闭时运行了此代码,并在b/w中启动了该机器(
$vmname
)。当它被关闭时,可以理解为“刀具状态为:”刀具固定。但即使在打开并获得机器的遥控器后,它仍显示相同的状态,然而,我检查了ESXI状态是否正在运行。我尝试了上述操作,例如它可能会被卡住,因此按ENTER键、鼠标单击等,但没有用。我使用的是powershell ISE主机,版本3.0。

您只运行了一次更新代码。while循环仅运行sleep命令和
write host
(该命令永远不会更改)。。试试这个:

Connect-VIServer $vmserver -User $vmuser -Password $vmpass

do {
    #This will min. once, until $status is 'toolsOK'
    $status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus

    if($status1 -ne 'toolsOK') { 
        Write-Host "tool status is:" $status
        Start-Sleep -Seconds 5
    }
}
until($status1 -eq 'toolsOK')

Write-Host "success"


您只运行一次更新代码。while循环仅运行sleep命令和
write host
(该命令永远不会更改)。。试试这个:

Connect-VIServer $vmserver -User $vmuser -Password $vmpass

do {
    #This will min. once, until $status is 'toolsOK'
    $status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus

    if($status1 -ne 'toolsOK') { 
        Write-Host "tool status is:" $status
        Start-Sleep -Seconds 5
    }
}
until($status1 -eq 'toolsOK')

Write-Host "success"