使用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"
当我的机器关闭并且黑白启动该机器($vmname
)时,我运行了这段代码。当它被关闭时,它被理解为“工具状态为:”toolsNotRunning.But即使在开机后也是如此然后我检查ESXI状态正在运行。我尝试了上面提到的事情,因为它可能会卡住所以按下ENTER,鼠标点击等,但没有USE ..我正在使用powershell ISE-主机,3.0版..
答案 0 :(得分: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"
或
Connect-VIServer $vmserver -User $vmuser -Password $vmpass
$status1 = (Get-VM -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus
while ($status1 -ne 'toolsOK') {
Write-Host "tool status is:" $status
Start-Sleep -Seconds 5
$status1 = (Get-VM -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus
}
Write-Host "success"